如何在scikit-learn中一致地标准化稀疏特征矩阵?

时间:2015-03-23 19:33:32

标签: scikit-learn sparse-matrix

我正在使用sklearn' DictVectorizer来构建一个大的稀疏特征矩阵,该矩阵被馈送到ElasticNet模型。当预测变量(特征矩阵中的列)居中并缩放时,弹性网(和类似的线性模型)效果最佳。 recommended approach用于构建在回归量之前使用Pipeline的{​​{1}},但不能使用稀疏要素,如docs中所述。

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

1 个答案:

答案 0 :(得分:0)

通过浏览sklearn代码,看起来在fit_intercept=Truenormalize=True时,在归一化数据上估计的系数会被投射回数据的原始比例。这类似于R处理标准化的方式glmnet。相关的代码段是_set_intercept的方法LinearModel,请参阅https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/linear_model/base.py#L158。因此,对原始尺度中看不见的数据使用系数的预测,即normalize=True是可以安全使用的。