Sklearn StandardScaler + ElasticNet具有可解释的系数

时间:2019-12-13 11:23:02

标签: python scikit-learn linear-regression regularized

为了正确地拟合像Elastic Net这样的正则化线性回归模型,必须首先对自变量进行标准化。然而,系数则具有不同的含义。为了提取此类模型的适当权重,我需要使用以下公式手动计算它们:
{}
还是sklearn中已经有一些内置功能?

另外:我不认为我只能使用b = b' * std_y/std_x参数,因为我有一些虚拟变量,这些变量应该保持未缩放状态

1 个答案:

答案 0 :(得分:1)

您可以使用平均值标准偏差取消标准化。使用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 没必要按照您的建议去做。