当前位置:   article > 正文

一元线性回归-python代码_线性回归代码python

线性回归代码python

1.一元回归分析的步骤

1.绘制散点图,确定回归模型类型
2.估计模型参数,建立回归模型类型
3.模型校核

2. Sklearn

pip install sklearn
说明:使用sklearn库中的LinearRegression的输入必须是二维[[1,2,5…]]

#1.导包
from sklearn.linear_model import LinearRegression 

model=LinearRegression()
训练模型:
model.fit(x,y)

模型评估:
model.score(x,y)

模型预测:
model.predict(x)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

3.数据集说明:

在这里插入图片描述

4. 代码演示

'''
y=ax+b (y为因变量,x为自变量,a为权重,b为截距。)
    1.数据相关性分析中,经常用到data.corr()函数,data.corr()表示了data中的两个变量之间的相关性,取值范围为[-1,1],取值接近-1,表示反相关,类似反比例函数,取值接近1,表正相关。

'''
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split   #切分训练集和验证集
import pandas as pd
import os

#第一步,读取数据
path = os.getcwd().replace('\\','/') + str('/1.回归问题/data/data.csv')
data = pd.read_csv(path)
# print(data.corr())

Y = data[['销售额']]       #将一维数据自动转化为二维数组
X = data[['广告投入']]

# 第二步,1.画出散点图,求x和y的相关系数
# plt.scatter(data.广告投入, data.销售额)  #输入x和y数据
# plt.rcParams['font.sans-serif'] = ['SimHei']  #用来正常显示中文标签 
# plt.xlabel("广告投入")
# plt.ylabel("销售额")

#第二步,2.绘热力图
# import seaborn as sns
# f, ax= plt.subplots(figsize = (14, 10))
# sns.heatmap(corr,cmap='RdBu', linewidths = 0.05, ax = ax)
# # 设置Axes的标题
# ax.set_title('Correlation between features')
# plt.show()
# plt.close()
# f.savefig('sns_style_origin.jpg', dpi=100, bbox_inches='tight')   #热力图保存


#%%
#第三步,生成linalg regression模型---拟合函数
linear_regressor = LinearRegression()
x_train,x_test,y_train,y_test = train_test_split(X,Y,test_size=0.3,random_state=0)   #则表示7:3进行划分数据集
linear_regressor.fit(x_train,y_train)  #拟合函数
# linear_regressor.fit(x_train,y_train).summary()  #模型描述
Y_pred = linear_regressor.predict(x_test)   #预测y   使用训练集train拟合得到拟合函数后,再使用测试集test得到预测值
print('a权重:',linear_regressor.coef_)
print('b截距:',linear_regressor.intercept_)

#第四步,数据可视化
plt.figure(figsize=(10,5))
# 训练接和测试集都以散点来表示,拟合线用折线表示
plt.scatter(x_train,y_train,s=10,label='训练集',c='b')
plt.scatter(x_test,y_test,s=10,label='测试集',c='g')
plt.plot(X,linear_regressor.predict(X),label='拟合线',c='r')  #x表所有的自变量
plt.legend() 


# 第五步,模型评估--这些任意可以选择,根据模型的还会去确定取舍
from sklearn.metrics import mean_squared_error,mean_absolute_error,r2_score
mes_test = mean_squared_error(y_test,Y_pred)

print("平均方误差(MSE):",mean_squared_error(y_test,Y_pred))
print("根均方误差(RMSE):",mean_absolute_error(y_test,Y_pred))
print("平均绝对值误差(MAE):",r2_score(y_test,Y_pred))  
RR = linear_regressor.score(x_test,y_test)
print("决定系数:",RR)  #模型越接近1,表示该模型越好

# 补充---验证该模型是否过拟合(通过训练集train进行验证)
Y_train_pred = linear_regressor.predict(x_train)   #预测y
mse_train = mean_squared_error(y_train,Y_train_pred)
# 当mes_train和mse_test误差很小,则证明该模型未发生过拟合现象。

#
# https://blog.csdn.net/qq_41583295/article/details/86444760?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-86444760-blog-121026296.pc_relevant_default&spm=1001.2101.3001.4242.2&utm_relevant_index=4
#
# # 5. 显著性检验
# # 5.1 线性相关变量的显著性检验,皮尔逊相关系数
# # print(scipy.stats.pearsonr(x, y))  # 返回r值和相关系数假设检验的p值。r越大表示线性相关程度越高。p值越小,表示原假设“总体相关系数=0的可能性越小,r值可信度越高。
#
# # 5.2 线性or非线性相关变量的显著性检验
# # 5.2.1 F检验
# MSR = SSR / p
# F = MSR / MSE
# F_p = scipy.stats.f.sf(F, p, n - 2)
# print('F检验的p值', F_p)
#
# # 5.2.2 t检验
# s_coef = np.sqrt(MSE) / np.sqrt(n * np.var(x))
# t = model.coef_ / s_coef
# print(t)
# t_p = scipy.stats.t.sf(t, n - 2)
# print('t检验的p值:', t_p)
``

```c
在这里插入代码片
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94

5.结果展示

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/683679
推荐阅读
相关标签
  

闽ICP备14008679号