拟合后访问 Lasso 回归系数

Posted

技术标签:

【中文标题】拟合后访问 Lasso 回归系数【英文标题】:Accessing Lasso Regression coefficients after fitting 【发布时间】:2018-05-11 08:05:55 【问题描述】:

我在获得最佳 Lambda 值后尝试 Lasso Regression,现在问题是,我想获得系数(权重向量),因为我想将它们与 Ridge 回归的权重进行比较。

lasso = Lasso(alpha=optimal_lmbda, fit_intercept=True, random_state=1142, max_iter=5000)
lasso.fit(X_train, y_train)
y_pred_lasso = lasso.predict(X_test)

如何在 Sklearn 中的 Python 中进行 Lasso Regression 拟合后得到系数(权重向量)?

【问题讨论】:

【参考方案1】:

只需关注sklearn.linear_model.Lasso 的文档

# Build lasso and fit
lasso = Lasso(...)
lasso.fit(...)

# Read out attributes
coeffs = lasso.coef_         # dense np.array
coeffs = lasso.sparse_coef_  # sparse matrix

coeffs = lasso.intercept_    # probably also relevant

根据评论更新:

lasso.coef_lasso.sparse_coef_有什么区别 type,如内嵌注释和文档中所述。 numpy-array 或 sparse-matrix(来自 scipy.sparse)。后者是相关的,如果你有很多变量,并且其中许多是零,因为强正则化(已知 l1 会影响许多零)。然后存储 0 是没用的,这就是稀疏数据结构的用途。 scipy 中没有密集向量类型,因此使用稀疏矩阵。内容一样!

【讨论】:

是否有可能知道分配给每个系数的特征名称是什么? @AlvaroMartinez 一旦你得到系数,就这样做np.array(df.columns)[coeff==0]。这将为您提供 Lasso 已将其系数缩小到 0 的所有功能。类似地,只需将 ==0 替换为 >0 即可获得 Lasso 尚未将其系数缩小到 0 的功能。

以上是关于拟合后访问 Lasso 回归系数的主要内容,如果未能解决你的问题,请参考以下文章

R构建lasso回归模型并获得最佳正则化系数

线性模型系数解读中的那些坑,以套索回归(LASSO)和岭回归(Ridege)为例

MatlabLasso回归(可替换数据)

拓端tecdat|R语言Bootstrap的岭回归和自适应LASSO回归可视化

岭回归与Lasso回归

数学建模学习:岭回归和lasso回归