300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 1 最小二乘回归 Lasso 岭回归

1 最小二乘回归 Lasso 岭回归

时间:2022-09-21 23:42:46

相关推荐

1 最小二乘回归 Lasso 岭回归

回归算法

理论知识1、最小二乘回归2、Lasso回归3、Ridge岭回归4、Elastic Net 弹性网代码演示1、数据集的获取2、代码实操总结

理论知识

1、最小二乘回归

假设有m个特征,n个样本点,则输入数据为:

于是可以得到:

由此我们计算得到的损失为:

优化w,对w求偏导得:

由此可以得到:

上述公式共包含有逆矩阵,而逆矩阵存在得前提是该矩阵为满秩矩阵。但实际中得特征矩阵往往不是满秩矩阵,此时可利用加正则化的数学方法进行改进。

2、Lasso回归

加上一个L1范数惩罚:

3、Ridge岭回归

加上一个L2范数惩罚:

4、Elastic Net 弹性网

加上一个L1和L2范数惩罚:

代码演示

利用机器学习库sklearn进行代码演示与调参,编译器选择jupyter notebook。

1、数据集的获取

想要获取数据集请点击这。选择工具钢和模具钢相关的数据集,部分截图见下图:

共360行20列数据,我们首先以硬度性能指标,对该数据进行Lasso回归和Ridge回归。

2、代码实操

第一步:导入相关库并从数据集中提取自己需要的特征列和标签列

import pandas as pd import numpy as npimport matplotlib.pyplot as pltfrom sklearn.linear_model import Lasso,Ridgefrom sklearn.model_selection import train_test_splitfrom sklearn.preprocessing import StandardScalerfrom sklearn.metrics import mean_squared_error

X = data.iloc[:,3:16]X

显示结果如下:

y1 = data.loc[:,['Hardness']]y1

第二步:对数据进行标准化处理

scaler = StandardScaler()X = scaler.fit_transform(X)X

特征标准化后的显示结果如下:

y1 = scaler.fit_transform(y1)y1

标签标准化后的显示结果如下:

第三步:划分训练集和测试集并查看大小

X_train, X_test, y_train, y_test = train_test_split(X, y1,test_size=0.3)

第四步:利用Lasso算法进行回归分析

lasso = Lasso(alpha=0.001)lasso.fit(X_train,y_train)y_lasso = lasso.predict(X_test)np.savetxt('lasso_predict.csv',y_lasso,delimiter=',')plt.scatter(y_test,y_lasso)plt.show()

初步显示结果图如下:

第五步:利用Ridge算法进行回归分析

ridge = Ridge(alpha=0.3)ridge.fit(X_train,y_train)y_ = ridge.predict(X_test)np.savetxt('ridge_predict.csv',y_,delimiter=',')plt.scatter(y_test,y_)plt.show()

初步显示结果图如下:

第六步:MSE损失与特征系数分析

Lasso回归的MSE损失:

Lasso回归的各特征系数和截距:

Ridge回归的MSE损失:

Ridge回归的各特征系数和截距:

总结

损失还是挺大的,回归预测的结果并不是特别好,上文仅仅是给了一个大致流程,下面还需要进行Lasso回归和Ridge回归中的参数调节,即调参,我会在以后的学习中进行逐步更新的。同时还要对回归预测的结果图进行精修,见下图:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。