如何在scikit学习中一致地标准化稀疏特征矩阵



我正在使用sklearn的DictVectorizer来构建一个大型稀疏特征矩阵,该矩阵被馈送到ElasticNet模型。当预测器(特征矩阵中的列)居中并按比例缩放时,弹性网(和类似的线性模型)工作得最好。建议的方法是构建一个Pipeline,它在回归器之前使用StandardScaler,但它不适用于稀疏特性,如文档中所述。

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

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

相关内容

  • 没有找到相关文章