怎么在线性回归模型中加入lasso正则化项,写一个python代码
时间: 2024-10-20 10:11:58 浏览: 28
在Python中,我们可以使用scikit-learn库中的`Lasso`类来实现线性回归模型中的LASSO(Least Absolute Shrinkage and Selection Operator)正则化。LASSO通过添加绝对值惩罚项来约束模型的系数,能够实现特征选择的效果。
以下是使用scikit-learn的一个简单例子:
```python
# 导入所需的库
from sklearn.linear_model import Lasso
import numpy as np
from sklearn.model_selection import train_test_split
import pandas as pd
# 假设我们有一个DataFrame df,其中包含特征X和目标变量y
data = pd.read_csv('your_data.csv') # 替换为你的数据文件路径
X = data.drop('target', axis=1)
y = data['target']
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建LASSO回归模型
lasso_reg = Lasso(alpha=0.1) # alpha参数控制正则化的强度,默认为1.0,这里设置较小以便观察更多的特征影响
# 拟合模型
lasso_reg.fit(X_train, y_train)
# 预测
predictions = lasso_reg.predict(X_test)
# 输出模型系数,可以看到哪些特征被选中了
print("Selected Features (non-zero coefficients): ", list(lasso_reg.coef_[lasso_reg.coef_ != 0]))
```
在这个例子中,`alpha`参数是LASSO正则化的重要部分,它决定了绝对值惩罚的大小。较小的`alpha`会倾向于选择更多的特征,而更大的`alpha`可能会使得某些特征的系数变为零,即特征被“剪枝”掉了。
阅读全文