机器学习多元线性回归最简单的一个算法,预测商品销售额

数据介绍

商品的销售可能与电视广告的投入,广播,报纸广告的投入有关系,通过分析,找出他们是怎么影响销售额,即求出多元线性回归的回归系数。数据下载
链接:https://pan.baidu.com/s/1JvxF-V2CV2ThoNVENzWTBw
提取码:pdj8

代码

#导入模块包

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

#读取数据
``

data = pd.read_csv('Advertising.csv')
#创建特征列表
feature_cols=['TV', 'radio', 'newspaper']
#使用列表选择data的子集
X=data[feature_cols]
# print(X.head())
y=data['sales']
# print(y.head())
X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=1,test_size=0.2)#分为训练集和测试集,训练集占0.8
# print(X_train.shape)
# print(y_test.shape)

#训练模型

linear_reg=LinearRegression()#尝试了下不能直接使用LinearRegression()来进行拟合
model=linear_reg.fit(X_train,y_train)
print('截距是:',model.intercept_)
print('系数是:',model.coef_)
#预测结果
y_predict=linear_reg.predict(X_test)


#测试准确度

'''
print(type(y_predict),type(y_test))
print(len(y_predict),type(y_test))
print(y_predict.shape,y_test.shape)
sum_mean=0
for i in range(len(y_predict)):
    sum_mean+=(y_predict[i]-y_test.values[i])**2
sum_erro=np.sqrt(sum_mean/40)
print('Rmse',sum_erro)
这是一个具体的求RMSE 的公式,下边的那个是一个包,可以直接求出
'''
print ('RMSE',np.sqrt(metrics.mean_squared_error(y_test, y_predict)))#squared先求差的平方再求平均数,再求开平方

绘制ROC曲线

plt.figure()
plt.plot(range(len(y_predict)),y_predict,'b',label='predict')
plt.plot(range(len(y_test)),y_test,'r',label='test')
plt.legend()#显示图中的标签
plt.xlabel('the number of sales')#横坐标
plt.ylabel('value of sales')#纵坐标
plt.show()

#结论
通过简单的数据集,分析出影响销售额的三种因素的回归系数
机器学习多元线性回归最简单的一个算法,预测商品销售额_第1张图片
电视广告对商品销售的影响最大,这也是与实际生活中判断的相符
机器学习多元线性回归最简单的一个算法,预测商品销售额_第2张图片
从上图可以看模型的测试集的预测的出的结果y_predict与真实的测试值y_test误差很小,说明整个数据拟合出的模型还是很不错,当然也是因为只考虑了三个简单的影响因素,实际生活中影响销售额的因素是很多的。

你可能感兴趣的:(机器学习多元线性回归最简单的一个算法,预测商品销售额)