燕山大学机器学习实验一:线性回归2——影厅观影人数预测

实操项目 1——糖尿病情预测

实验要求

1.读取给定文件中数据。(数据集路径:data/data72160/1_film.csv)
2.绘制影厅观影人数(filmnum)与影厅面积(filmsize)的散点图。
3.绘制影厅人数数据集的散点图矩阵。
4.选取特征变量与相应变量,并进行数据划分。
5.进行线性回归模型训练。
6.根据求出的参数对测试集进行预测。
7.绘制测试集相应变量实际值与预测值的比较。
8.对预测结果进行评价。

实验过程

1.对该题目的理解

        影厅观影人数预测主要是是实现多变量数据的可视化,并且利用多变量线性回归算法来进行数据拟合与预测,然后利用实际值与预测值绘制一个折线图,对其进行比较,然后得出预测的得分对预测结果评价。

2.实现过程

(1)导入包

代码如下:

import numpy as np  
import matplotlib.pyplot as plt  
import pandas as pd  
from sklearn.model_selection import train_test_split  
from sklearn.linear_model import LinearRegression  

(2)读取给定文件中数据。(数据集路径:data/data72160/1_film.csv)。

代码如下:

film=pd.read_csv("data/data72160/1_film.csv")#读取文件  
#读取0~5行,并输出  
X=film.iloc[0:5,:]  
print(X)  
#切分成DataFrame数据  
filmpd=pd.DataFrame(film)  
print(film.shape)  

(3)绘制影厅观影人数与影厅面积的散点图

代码如下:

X=film.iloc[:,0]#X轴为观影人数(filmnum)  
y=film.iloc[:,1]#y轴是影厅面积(filmsize)  
	  
plt.figure(figsize=(10,6))  
plt.scatter(X,y)#绘制散点图  
plt.xlabel(u'filmnum')  
plt.ylabel(u'filmsize')  
plt.title(u'The relation of filmnum and filmsize')#标题  
plt.show()  

(4)绘制影厅人数数据集的散点图矩阵

代码如下:

import seaborn as sns  
cols=['filmnum']  
#pairplot主要展现的是变量两两之间的关系  
#kind:用于控制非对角线上的图的类型,可选"scatter"与"reg"  
#diag_kind:控制对角线上的图的类型,可选"hist"与"kde"  
#将 kind 参数设置为 "reg" 会为非对角线上的散点图拟合出一条回归直线,更直观地显示变量之间的关系  
#plot_kws:用于控制非对角线上的图的样式  
#diag_kws:用于控制对角线上图的样式  
sns.pairplot(film[cols],kind='reg',size=2.5)  
#tight_layout会自动调整子图参数,使之填充整个图像区域  
plt.tight_layout()  
plt.title(u'scatterplot matrix of filmnum')  
plt.show()  

 (5)选取特征变量与相应变量,并进行数据划分

代码如下:

X=film.iloc[:,1:4]  
y=film.filmnum  
X=np.array(X.values)  
y=np.array(y.values)  
train_X,test_X,train_y,test_y=train_test_split(X,y,test_size=0.25)  
print(train_X.shape)  

(6)进行线性回归模型训练

代码如下:

model=LinearRegression()  
model.fit(train_X,train_y)  

(7)根据求出的参数对测试集进行预测

代码如下:

pre_y=model.predict(test_X)  
print("根据测试及X预测的y集是:\n",pre_y)  

(8)绘制测试集相应变量实际值与预测值的比较

代码如下:

plt.figure(figsize=(12,8))  
t=np.arange(len(test_X))#arange返回的是一个数据,创建t变量  
plt.plot(t,test_y,linewidth=2,label="test_y",color="red")#真实  
plt.plot(t,pre_y,linewidth=2,label="pre_y",color="blue")#预测  
plt.legend()#设置图例  
plt.title("实际值与预测值折线图")   
plt.xlabel("test_data")  
plt.ylabel("filmnum")  
plt.show()  

(9)绘制测试集相应变量实际值与预测值的比较

代码如下:

from sklearn.metrics import mean_squared_error #均方误差  
from sklearn.metrics import mean_absolute_error #平方绝对误差  
from sklearn.metrics import r2_score#R square  
#调用  
mean_squared_error(test_y,pre_y)  
mean_absolute_error(test_y,pre_y)  
print('score={}'.format(r2_score(test_y,pre_y)))  

3.实验结果

绘制影厅观影人数与影厅面积的散点图

绘制影厅人数数据集的散点图矩阵

 

根据求出的参数对测试集进行预测

 绘制测试集相应变量实际值与预测值的比较。

实验总结 

1.通过此实验了解了回归评价的指标,我学会了拟合优度R,但是它有缺点,缺点是数据集的样本越大,R²越大,因此,不同数据集的模型结果比较会有一定的误差。

2.通过此实验我也了解了如何创建散点图矩阵,了解了其中的pairplot主要展现的是变量两两之间的关系。

3.更加熟练了如何画散点图,如何训练模型,如何划分数据集测试集等等。

 

 

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shallen.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值