线性回归模型、岭回归、Lasso对数据的训练与测试

 

1、导入工具包

from sklearn.model_selection import train_test_split

import numpy as np
import pandas as pd
from sklearn import linear_model
from sklearn.linear_model import Ridge
from sklearn.linear_model import Lasso
from sklearn.model_selection import GridSearchCV
import matplotlib.pyplot as plt
from sklearn.metrics import r2_score

2、读取数据

数据源还是共享单车的数据。共731个样本,每个样本有35列。

#pd.set_option('display.max_colwidth',1000)
#导入特征工程处理之后的数据
data=pd.read_csv('FE_bikesharing_train.csv')
#print(data.shape)
y=data['cnt']
X=data.drop('cnt',axis=1)

3、数据的分割

其中80%用于训练,20%用于测试

#数据的分割 80%用于训练 20%用于测试
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)
#print(X_train.shape)
#print(X_test.shape)
#print(y_train.shape)
#print(y_test.shape)

4、训练三种模型的数据

#线性模型
lm=linear_model.LinearRegression()
#岭回归模型
#岭回归系数越大,原始系数被压缩的越严重;越小越趋向于线性回归模型的系数
ridge=Ridge(alpha=10)
#Lasso模型,惩罚数据越大,原始系数的作用就越小;城府数据越小,原始数据的作用就越大
lasso=Lasso(alpha=10)
#训练三种模型数据
reg1=lm.fit(X_train,y_train)
reg2=ridge.fit(X_train,y_train)
reg3=lasso.fit(X=X_train,y=y_train)

5、得到三种模型对应的预测值

顺便拿取了r2分数

#获得三种模型的预测值
lm_pred=lm.predict(X_test)
ridge_pred=ridge.predict(X_test)
lasso_pred=lasso.predict(X_test)
#r2分数
lm_r2=r2_score(y_test,lm_pred)
ridge_r2=r2_score(y_test,ridge_pred)
lasso_r2=r2_score(y_test,lasso_pred)
print('lm_r2',lm_r2)
print('ridge_r2',ridge_r2)
print('lasso_r2',lasso_r2)

输出为:

lm_r2  0.8435589442822488
ridge_r2  0.8296503329586667
lasso_r2  0.8339856832485875

6、对三种模型的系数做对比

#画出参数
plt.figure(figsize=(12,8))
#线性回归
#plt.subplot(221)
plt.plot(reg1.coef_,color='lightgreen',lw=2,label='lr coefficients')
plt.legend()

#岭回归
#plt.subplot(222)
plt.plot(reg2.coef_,color='red',lw=2,label='Ridge coefficients')
plt.legend()

#lasso回归
#plt.subplot(223)
plt.plot(reg3.coef_,color='gold',lw=2,label='Lasso coefficients')
plt.legend()


plt.show()

对比图:

    

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值