线性回归之正则化的模型
一、普通的线性模型
import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn import metrics %matplotlib inline
data = pd.read_csv('Advertising.csv',index_col=0)#第一列为index
data.head()

#切分训练集和测试集
x = data.values[:,:3]
y = data.values[:,3]
x_train,x_test,y_train,y_test = train_test_split(x,y,train_size=0.7,random_state=0)
#标准化处理
sc = StandardScaler()
x_train_std = sc.fit_transform(x_train)
x_test_std = sc.transform(x_test)
#训练模型
linreg = LinearRegression()
linreg.fit(x_train_std,y_train)
y_pred = linreg.predict(x_test_std)
#检验模型结果
mse = np.average((y_pred-y_test)**2)
metrics.mean_squared_error(y_pred,y_test) #这个也是均方误差
r2 = metrics.r2_score(y_test,y_pred) #R2值,注意参数,前面的是实际值,后面的是预测值
mse,r2
#计算R2
def calculater2(y_pred,y_test):
RSS = ((y_pred-y_test)**2).sum()
TSS = (((y_test-np.average(y_test))**2)).sum()
return 1-(RSS/TSS)
calculater2(y_pred,y_test)
#画图
fig = plt.figure(figsize=(10,6))
plt.plot(y_test)
plt.plot(y_pred)

二、加入正则化的模型
Ridge回归
from sklearn.linear_model import RidgeCV,LassoCV #用这个自带交叉验证参数
from sklearn.model_selection import GridSearchCV #如果使用RidgeCV就不用GridSearchCV这个API了
#使用RidgeCV来建立参数
alpha = np.logspace(-3,2,10) #生成超参数,10的-3次方到10的2次方的等差数列
ridge = RidgeCV(alpha,cv=5)
ridge.fit(x_train_std,y_train)
ridge.alpha_ #输出超参数的值
#使用Ridge配合GridSearchCV来做
from sklearn.linear_model import Ridge,Lasso
ridge_model = GridSearchCV(Ridge(),param_grid={'alpha':alpha},cv=5)
ridge_model.fit(x_train_std,y_train)
ridge_model.best_params_
#验证模型效果
y_pred_ridge = ridge.predict(x_test_std)
mse_ridge = metrics.mean_squared_error(y_test,y_pred_ridge)
r2_ridge = metrics.r2_score(y_test,y_pred_ridge)
mse_ridge,r2_ridge
Lasso回归
#建立模型 lasso = LassoCV(alphas=alpha,cv=5) lasso.fit(x_train_std,y_train) lasso.alpha_ #验证模型效果 y_pred_lasso = lasso.predict(x_test_std) mse_lasso = metrics.mean_squared_error(y_test,y_pred_lasso) r2_lasso = metrics.r2_score(y_test,y_pred_lasso) mse_lasso,r2_lasso
博主简介:博主国内安全行业目前最强大的网络安全公司做技术研究员,常年做技术工作。 获得过以下全国竞赛大奖: 《中国电子作品大赛一等奖》 《云计算技术大赛一等奖》 《AIIA人工智能大赛优胜奖》《网络安全知识竞赛一等奖》 《高新技术个人突出贡献奖》,并参与《虚拟化技术-**保密**》一书编写,现已出版。还拥有多项专利,多项软件著作权! 且学习状态上进,立志做技术牛逼的人。座右铭:在路上,永远年轻,永远热泪盈眶。可邮件联系博主共同进步,个人邮箱:Mrli888@88.com


浙公网安备 33010602011771号