【问题标题】:How to consistently standardize sparse feature matrix in scikit-learn?如何在 scikit-learn 中一致地标准化稀疏特征矩阵?
【发布时间】:2015-05-26 22:47:00
【问题描述】:

我正在使用 sklearn 的 DictVectorizer 构建一个大型的稀疏特征矩阵,该矩阵被馈送到 ElasticNet 模型。当预测变量(特征矩阵中的列)居中和缩放时,弹性网络(和类似的线性模型)效果最好。 recommended approach 是构建一个Pipeline,它在回归器之前使用StandardScaler,但是这不适用于稀疏特征,如docs 中所述。

我想在ElasticNet 中使用normalize=True 标志,这似乎支持稀疏数据,但是尚不清楚在预测期间是否也对测试数据应用了标准化。有谁知道normalize=True 是否也适用于预测?如果没有,在处理稀疏特征时,有没有办法在训练集和测试集上使用相同的标准化?

【问题讨论】:

    标签: scikit-learn sparse-matrix


    【解决方案1】:

    挖掘 sklearn 代码,看起来当fit_intercept=Truenormalize=True 时,在归一化数据上估计的系数被投影回数据的原始规模。这类似于 R 中的 glmnet 处理标准化的方式。相关代码sn -p是LinearModel的方法_set_intercept,见https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/linear_model/base.py#L158。因此,对未见数据的预测使用原始尺度中的系数,即normalize=True 可以安全使用。

    【讨论】:

      猜你喜欢
      • 2018-06-20
      • 2019-05-29
      • 2015-08-04
      • 2013-09-25
      • 2021-05-18
      • 2012-11-24
      • 2016-10-09
      • 1970-01-01
      • 2013-04-12
      相关资源
      最近更新 更多