机器学习实验1.2——影厅观影人数预测
实验内容:影厅观影人数预测
实验要求:
1.读取给定文件中数据集文件。(数据集路径:data/data72160/1_film.csv)
2.绘制影厅观影人数(filmnum)与影厅面积(filmsize)的散点图。
3.绘制影厅人数数据集的散点图矩阵。
4.选取特征变量与相应变量,并进行数据划分。
5.进行线性回归模型训练。
6.根据求出的参数对测试集进行预测。
7.绘制测试集相应变量实际值与预测值的比较。
8.对预测结果进行评价。
In [39]
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn import metrics
from sklearn.metrics import r2_score
#1.读取给定文件中数据集文件。(数据集路径:data/data72160/1_film.csv)
csv_data=pd.read_csv('data/data72160/1_film.csv')#直接读取为DataFrame格式
print(csv_data.shape)#查看读取情况
print(csv_data[:5])
#2.绘制影厅观影人数(filmnum)与影厅面积(filmsize)的散点图。
#先截取对应数据
filmnum=csv_data.loc[:,'filmnum'].values.reshape(-1,1)
filmsize=csv_data.loc[:,'filmsize'].values.reshape(-1,1)
#绘图
plt.figure()
plt.scatter(filmsize,filmnum)
plt.xlabel('filmsize')
plt.ylabel('filmnum')
plt.title('filmsize-filmnum')
plt.show()
#3.绘制影厅人数数据集的散点图矩阵。
plt.figure()
tmp=np.arange(0,len(filmnum),1)
plt.scatter(tmp,filmnum,color='r')
plt.ylabel('filmnum')
plt.xlabel('index')
plt.title('index-filmnum')
plt.show()
#4.选取特征变量与相应变量,并进行数据划分。
x=csv_data.iloc[:,1:]
y=filmnum
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.25)
x_train.shape,x_test.shape,y_train.shape,y_test.shape
#5.进行线性回归模型训练。
lr=LinearRegression()
lr.fit(x_train,y_train)
#6.根据求出的参数对测试集进行预测。
y_hat=lr.predict(x_test)
#7.绘制测试集相应变量实际值与预测值的比较。
plt.figure()
t = np.arange(len(x_test)) #创建t变量
plt.plot(t, list(y_test), 'r', label='y_test') #绘制y_test曲线
plt.plot(t, list(y_hat), 'g', label='y_hat') #绘制y_hat曲线
plt.legend() #设置图例
plt.show()
#8.对预测结果进行评价。
print ("r2_score:",r2_score(y_test, y_hat)) #使用metrics的r2_score来对预测集的拟合优度进行评价
(126, 4) filmnum filmsize ratio quality 0 45 106 17 6 1 44 99 15 18 2 61 149 27 10 3 41 97 27 16 4 54 148 30 8
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
r2_score: 0.7764138417718565

浙公网安备 33010602011771号