python机器学习库scikit-learn: Lasso Regression
在数据挖掘和机器学习算法的模型建立之初,为了尽量的减少因缺少重要变量而出现的模型偏差问题,我们通常会尽可能的多的选择自变量。但是在实际建模的过程中,通常又需要寻找 对响应变量具有解释能力的自变量子集,以提高模型的解释能力与预测精度,这个过程称为特征选择。
特征选择主要有两个功能:1.减少特征数量、降维,使模型泛化能力更强,减少过拟合 2.增强对特征和特征值之间的理解
Lasso回归模型,是一个用于估计稀疏参数的线性模型,特别适用于参数数目缩减。
一个简单的例子(这个例子简单介绍了Lasso应该如何使用):
from sklearn.datasets import make_regression
from sklearn.linear_model import Lasso
'''创造数据X Y'''
reg_data, reg_target = make_regression(n_samples=200, n_features=10, n_informative=5, noise=5)
''' 通过交叉检验来获取最优参数'''
from sklearn.linear_model import LassoCV
lassocv = LassoCV()
lassocv.fit(reg_data, reg_target)
alpha = lassocv.alpha_
print('利用Lasso交叉检验计算得出的最优alpha:' + str(alpha))
'''lasso回归'''
lasso = Lasso(1)
lasso.fit(reg_data, reg_target)
'''计算系数不为0的个数'''
import numpy as np
n = np.sum(lasso.coef_ != 0)
print('Lasso回归后系数不为0的个数:' + str(n))
'''输出结果
如果names没有定义,则用X1 X2 X3代替
如果Sort = True,会将系数最大的X放在最前'''
def pretty_print_linear(coefs, names = None, sort = False):
if names == None:
names = ["X%s" % x for x in range(len(coefs))]
lst &#