我正在使用sklearn的DictVectorizer
来构建一个大型稀疏特征矩阵,该矩阵被馈送到ElasticNet
模型。当预测器(特征矩阵中的列)居中并按比例缩放时,弹性网(和类似的线性模型)工作得最好。建议的方法是构建一个Pipeline
,它在回归器之前使用StandardScaler
,但它不适用于稀疏特性,如文档中所述。
我想在ElasticNet
中使用normalize=True
标志,它似乎支持稀疏数据,但尚不清楚在预测测试数据时是否也应用了归一化。有人知道normalize=True
是否也适用于预测吗?如果没有,在处理稀疏特征时,是否有方法在训练和测试集上使用相同的标准化?
通过sklearn代码,当fit_intercept=True
和normalize=True
时,在归一化数据上估计的系数会投影回数据的原始规模。这与R中的glmnet
处理标准化的方式类似。相关的代码片段是LinearModel
的方法_set_intercept
,请参阅https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/linear_model/base.py#L158.因此,对看不见的数据的预测使用原始尺度的系数,即normalize=True
可以安全使用。