回归分析是研究自变量和因变量之间数量变化关系的一种分析方法。
回归分析包括线性回归和非线性回归。线性回归包括简单线性回归和多重线性回归。
现有一份某超市的广告费用和销售额的数据,求广告费用和销售额之间的线性关系。
数据源:https://pan.baidu.com/s/1a9vrAcz2CxaqG1EFJSqMZg
代码如下:
一、导入数据
import pandas as pd
import numpy as np
#导入数据
data=pd.read_csv('C:/Users/86138/Desktop/PDABook/wu/5.10.2 简单线性回归分析/线性回归.csv')
#查看数据基本信息
print(data.head())
print(data.info())
#修改列名
data.columns=['yuefen','guanggao','xiaoshoue']
#指定x、y
x=np.array(data['guanggao']).reshape(-1,1)
y=np.array(data['xiaoshoue']).reshape(-1,1)
输出
二、绘制散点图
#绘制散点图
import matplotlib.pyplot as plt
plt.scatter(x,y)
plt.show()
输出
从散点图可看出,两者有明显的线性关系。
三、计算相关系数
a=data['guanggao'].corr(data['xiaoshoue'])
print(a)
输出相关系数为0.94,高度相关。
四、建立模型
#建立模型
from sklearn.linear_model import LinearRegression
IrModel=LinearRegression()
IrModel.fit(x,y)
print(IrModel.coef_) #系数
print(IrModel.intercept_) #截距,常数项
输出
所以,销售额y与广告费用x之间的线性关系为:
y=17.32x + 291.90
模型拟合度:
print(IrModel.score(x,y)) #模型拟合度R方
得到R方为0.88,拟合效果非常不错。R方越接近1,表示回归模型拟合效果越好。
(R方的值等于y值和模型计算出来的y_值的相关系数R的平方)
预测:
pred_y=IrModel.predict(pred_x) #预测,输入要预测的pred_x值,得到预测y值
print(pred_y)
第一次运行时报错:
这是由于在新版的sklearn中,所有的数据都应该是二维矩阵,哪怕它只是单独一行或一列(比如前面做预测时,仅仅只用了一个样本数据),所以需要使用.reshape(1,-1)进行转换,具体操作如下。
需改为