多语言展示
当前在线:558今日阅读:138今日分享:34

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

线性回归预测模型是机器学习中的基本算法之一,使用于很多场景的预测,如可以根据房子的面积简单预测房子的价格,也可以进行预测下周哪个电视节目会有更多的观众,这里我们以预测电视节目的观众为场景,具体说明如何使用Python进行预测的。
工具/原料

Visual studio 2017 安装了Python

方法/步骤
1

首先我们需要准备用于预测的数据我们将数据保存在csv文件中然后在python中读取出来供应用处理。样例数据:sdx,sdx_number,ljx,ljx_number1,4.83,1,2.842,4.27,2,2.323,3.59,3,2.554,3.53,4,2.495,3.46,5,2.736,3.73,6,2.67,3.47,7,2.648,4.34,8,3.929,4.66,9,3.06

2

在Python中到定义一个函数将文件中的数据读取到我们的内存模型中,我们使用pandas库进行数据读取,如下所示:#导入依赖库import csvimport sysimport matplotlib.pyplot as pltimport numpy as npimport pandas as pdfrom 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_paramprint(read_data('e:/jiemudata.csv'))

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('绿箭侠在下周会有更多观众')

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])运行程序后可以看到结果如下图所示

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('绿箭侠在下周会有更多观众')

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()

推荐信息