拟合后访问 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 回归系数的主要内容,如果未能解决你的问题,请参考以下文章
线性模型系数解读中的那些坑,以套索回归(LASSO)和岭回归(Ridege)为例