如何使用Python进行节目观众数的线性回归预测

2026-04-15 22:08:01

1、首先我们需要准备用于预测的数据

我们将数据保存在csv文件中然后在python中读取出来供应用处理。

样例数据:

sdx,sdx_number,ljx,ljx_number

1,4.83,1,2.84

2,4.27,2,2.32

3,3.59,3,2.55

4,3.53,4,2.49

5,3.46,5,2.73

6,3.73,6,2.6

7,3.47,7,2.64

8,4.34,8,3.92

9,4.66,9,3.06

如何使用Python进行节目观众数的线性回归预测

2、在Python中到定义一个函数将文件中的数据读取到我们的内存模型中,我们使用pandas库进行数据读取,如下所示:

#导入依赖库

import csv

import sys

import matplotlib.pyplot as plt

import numpy as np

import pandas as pd

from sklearn import datasets,linear_model

#读取cvs文件的数据的函数

def read_data(file_name):

    data=pd.read_csv(file_name)

    #文件的数据模型

    shandianxia_x_param=[]

    shandianxia_y_param=[]

    lvjianxia_x_param=[]

    lvjianxia_y_param=[]

    #数据填充

    for x1,y1,x2,y2 in zip(data['sdx'],data['sdx_number'],data['ljx'],data['ljx_number']):

        shandianxia_x_param.append([float(x1)])

        shandianxia_y_param.append([float(y1)])

        lvjianxia_x_param.append([float(x2)])

        lvjianxia_y_param.append([float(y2)])

    return shandianxia_x_param,shandianxia_y_param,lvjianxia_x_param,lvjianxia_y_param

print(read_data('e:/jiemudata.csv'))

如何使用Python进行节目观众数的线性回归预测

3、定义一个函数,根据上一个步骤读取的数据进行预测对比看看那个界面更受欢迎。

def compare_viewers(x1,y1,x2,y2):

    reg1=linear_model.LinearRegression()

    reg1.fit(x1,y1)

    shandianxia_predicated_value=reg1.predict(10)

    

    reg2=linear_model.LinearRegression()

    reg2.fit(x2,y2)

    lvjianxia_predicated_value=reg2.predict(10)

    if shandianxia_predicated_value>lvjianxia_predicated_value:

        print("闪电侠在下一周会有更多观众")

    else:

        print("绿箭侠在下周会有更多观众")

如何使用Python进行节目观众数的线性回归预测

4、进行数据预测和比对,将read_data获取到的数据传入compare_viewers函数中:

all_data=read_data('e:/jiemudata.csv')

compare_viewers(all_data[0],all_data[1],all_data[2],all_data[3])

运行程序后可以看到结果如下图所示

如何使用Python进行节目观众数的线性回归预测

5、为了更形象、更直观表现数据,我么把相关数据使用图表展现出来,我么在比对函数中增加数据表展现功能:

def compare_viewers(x1,y1,x2,y2):

    reg1=linear_model.LinearRegression()

    reg1.fit(x1,y1)

    shandianxia_predicated_value=reg1.predict(10)

    #将预测值加入到数据模型中,统一展现

    x1.append([10])

    y1.append([shandianxia_predicated_value])

    plt.figure()

    plt.title("Jiemu Number View")

    plt.xlabel("Week")

    plt.ylabel("Numbers")

    plt.axis([0,10,0.0,10.0]) #x,y轴的范围值

    plt.grid(True)

    plt.plot(x1,y1,'r.')

     

    

    reg2=linear_model.LinearRegression()

    reg2.fit(x2,y2)

   

    lvjianxia_predicated_value=reg2.predict(10)

    x2.append([10])

    y2.append([lvjianxia_predicated_value])

    

    plt.plot(x2,y2,'g*')

    plt.show()

    if shandianxia_predicated_value>lvjianxia_predicated_value:

        print("闪电侠在下一周会有更多观众")

    else:

        print("绿箭侠在下周会有更多观众")

如何使用Python进行节目观众数的线性回归预测

6、运行完整的代码,就可以看到所有的数据,包含了预测的数据在图表中展现出来,完整的代码如下:

#导入依赖库

import csv

import sys

import matplotlib.pyplot as plt

import numpy as np

import pandas as pd

from sklearn import datasets,linear_model

#读取cvs文件的数据的函数

def read_data(file_name):

    data=pd.read_csv(file_name)

    #文件的数据模型

    shandianxia_x_param=[]

    shandianxia_y_param=[]

    lvjianxia_x_param=[]

    lvjianxia_y_param=[]

    #数据填充

    for x1,y1,x2,y2 in zip(data['sdx'],data['sdx_number'],data['ljx'],data['ljx_number']):

        shandianxia_x_param.append([float(x1)])

        shandianxia_y_param.append([float(y1)])

        lvjianxia_x_param.append([float(x2)])

        lvjianxia_y_param.append([float(y2)])

    return shandianxia_x_param,shandianxia_y_param,lvjianxia_x_param,lvjianxia_y_param

#预测并比对

def compare_viewers(x1,y1,x2,y2):

    reg1=linear_model.LinearRegression()

    reg1.fit(x1,y1)

    shandianxia_predicated_value=reg1.predict(10)

    #将预测值加入到数据模型中,统一展现

    x1.append([10])

    y1.append([shandianxia_predicated_value])

    plt.figure()

    plt.title("Jiemu Number View")

    plt.xlabel("Week")

    plt.ylabel("Numbers")

    plt.axis([0,10,0.0,10.0]) #x,y轴的范围值

    plt.grid(True)

    plt.plot(x1,y1,'r.')

     

    

    reg2=linear_model.LinearRegression()

    reg2.fit(x2,y2)

   

    lvjianxia_predicated_value=reg2.predict(10)

    x2.append([10])

    y2.append([lvjianxia_predicated_value])

    

    plt.plot(x2,y2,'g*')

    plt.show()

    if shandianxia_predicated_value>lvjianxia_predicated_value:

        print("闪电侠在下一周会有更多观众")

    else:

        print("绿箭侠在下周会有更多观众")

#进行数据预测和比对

all_data=read_data('e:/jiemudata.csv')

compare_viewers(all_data[0],all_data[1],all_data[2],all_data[3])

如何使用Python进行节目观众数的线性回归预测

7、最后我们在给一系列的预测,创建一个拟合图形展现

plt.plot(x1,reg1.predict(x1),'r-')#绿色线条 

plt.plot(x2,reg2.predict(x2),'g-')#绿色线条 

------------compare_viewers函数完整代码-----------------------

#预测并比对

def compare_viewers(x1,y1,x2,y2):

    reg1=linear_model.LinearRegression()

    reg1.fit(x1,y1)

    shandianxia_predicated_value=reg1.predict(10)

    #将预测值加入到数据模型中,统一展现

    x1.append([10])

    y1.append([shandianxia_predicated_value])

    plt.figure()

    plt.title("Jiemu Number View")

    plt.xlabel("Week")

    plt.ylabel("Numbers")

    plt.axis([0,15,0.0,10.0]) #x,y轴的范围值

    plt.grid(True)

    plt.plot(x1,y1,'r.')

    #绘制拟合模型

    plt.plot(x1,reg1.predict(x1),'r-')#绿色线条 

     

    

    reg2=linear_model.LinearRegression()

    reg2.fit(x2,y2)

   

    lvjianxia_predicated_value=reg2.predict(10)

    x2.append([10])

    y2.append([lvjianxia_predicated_value])

  

    if shandianxia_predicated_value>lvjianxia_predicated_value:

        print("闪电侠在下一周会有更多观众")

    else:

        print("绿箭侠在下周会有更多观众")

      

    plt.plot(x2,y2,'g*')

    #绘制拟合模型

    plt.plot(x2,reg2.predict(x2),'g-')#绿色线条 

    plt.show()

如何使用Python进行节目观众数的线性回归预测

猜你喜欢