数据预处理与特征工程—9.Lasso算法实现特征选择

文章目录

引言

  为什么Lasso算法可以用于特征选择呢?因为Lasso算法可以使特征的系数进行压缩并且可以使某些回归系数为0,即不选用该特征,因此可以进行特征选择。而与它同为线性回归正则化方法的Ridge回归只能使某些回归系数接近于0,起不到特征选择的作用。
  Lasso回归方法的优点是可以弥补最小二乘法和逐步回归局部最优估计的不足,可以很好的进行特征选择,可以有效的解决各特征之间存在的多重共线性问题。缺点是如果存在一组高度相关的特征时,Lasso回归倾向于选择其中一个特征,而忽视其他所有特征,这种情况会导致结果的不稳定性。

实战

data.csv数据,提取码:1234

import pandas as pd
import numpy as np
from sklearn.linear_model import Lasso

data = pd.read_csv('data/data.csv', header=0)
x, y = data.iloc[:, :-1], data.iloc[:, -1]

# 取alpha=1000进行特征提取
lasso = Lasso(alpha=1000, random_state=1)  
lasso.fit(x, y)
# 相关系数
print('相关系数为', np.round(lasso.coef_, 5))
coef = pd.DataFrame(lasso.coef_, index=x.columns)
print('相关系数数组为\n', coef)
# 返回相关系数是否为0的布尔数组
mask = lasso.coef_ != 0.0
# 对特征进行选择
x = x.loc[:, mask]
new_reg_data = pd.concat([x, y], axis=1)
new_reg_data.to_csv('new_reg_data.csv')

相关系数数组为
x1 -0.000176
x2 -0.000000
x3 0.124143
x4 -0.010312
x5 0.065400
x6 0.000115
x7 0.317411
x8 0.034900
x9 -0.000000
x10 0.000000
x11 0.000000
x12 0.000000
x13 -0.040299

参考于《python数据分析与挖掘实战》


如果对您有帮助,麻烦点赞关注,这真的对我很重要!!!如果需要互关,请评论或者私信!
在这里插入图片描述


猜你喜欢

转载自blog.csdn.net/weixin_46649052/article/details/115417997
今日推荐