我正在使用sklearn' DictVectorizer
来构建一个大的稀疏特征矩阵,该矩阵被馈送到ElasticNet
模型。当预测变量(特征矩阵中的列)居中并缩放时,弹性网(和类似的线性模型)效果最佳。 recommended approach用于构建在回归量之前使用Pipeline
的{{1}},但不能使用稀疏要素,如docs中所述。
我想在StandardScaler
中使用似乎支持稀疏数据的normalize=True
标志,但是不清楚在预测期间是否也将标准化应用于测试数据。有谁知道ElasticNet
是否也适用于预测?如果没有,有没有办法在处理稀疏特征时在训练和测试集上使用相同的标准化?
答案 0 :(得分:0)
通过浏览sklearn代码,看起来在fit_intercept=True
和normalize=True
时,在归一化数据上估计的系数会被投射回数据的原始比例。这类似于R处理标准化的方式glmnet
。相关的代码段是_set_intercept
的方法LinearModel
,请参阅https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/linear_model/base.py#L158。因此,对原始尺度中看不见的数据使用系数的预测,即normalize=True
是可以安全使用的。