python - Sklearn StandardScaler + ElasticNet 具有可解释系数

标签 python scikit-learn linear-regression regularized

为了正确拟合像弹性网络这样的正则化线性回归模型,必须首先对自变量进行标准化。然而,系数具有不同的含义。为了提取此类模型的适当权重,我是否需要使用以下方程手动计算它们:
b = b' * std_y/std_x
或者 sklearn 中已经有一些内置功能吗?

另外:我认为我不能只使用 normalize=True 参数,因为我有虚拟变量,它们可能应该保持未缩放

最佳答案

您可以使用均值标准差进行非标准化。 sklearn 在您使用 StandardScaler 后提供它们。

from sklearn.preprocessing import StandardScaler

ss = StandardScaler()
ss.fit_transform(X_train) # or whatever you called it

unstandardized_coefficients = model.coef_ * np.sqrt(ss.var_) + ss.mean_

这将使它们达到非标准化数据的规模。

但是,由于您使用的是正则化,所以它会成为一个有偏估计。当涉及有偏/无偏估计时,性能和可解释性之间需要权衡。这更多是关于stats.stackexchange.com的讨论。无偏估计量和低 MSE 估计量之间存在差异。在这里阅读有关有偏估计量和可解释性的信息:When is a biased estimator preferable to unbiased one?

tl;dr按照你的建议去做是没有意义的。

关于python - Sklearn StandardScaler + ElasticNet 具有可解释系数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59321593/

相关文章:

python - 使用标签将列传递给输入器的正确方法?

r - 增加观测值数量会使 R 抛出随机系数 - 数值稳定性问题?

r - 使用 ggplot2 用两种不同颜色绘制一条线

数据集子集的回归

Python 版本 <= 3.9 : Calling class staticmethod within the class body?

python - 使用 json 和 tweepy 获取位置?

python - 替换满足特定阈值的python ndarray的值

python - 稀疏数据集上的谱聚类

python - 如何保留包含具有重复键的对象的 JSON 文档中的所有键值对?

scikit-learn - 如何将 RandomForest 折叠成等效的决策树?