为什么我的ElasicNetCV回归器会重新缩放输入?

时间:2019-09-20 23:27:55

标签: machine-learning scikit-learn linear-regression

我有一个简单的管道,用于将一些数据输入几个不同的线性模型中进行比较。它只是标准缩放器,后跟回归器。当我对Lasso或Ridge回归进行此操作时,一切正常:

lassocv = Pipeline([('scaler', StandardScaler()), ('lasso', linear_model.LassoCV(n_jobs=-1, cv=5))])
lassocv.fit(X_train, y_train)

y_hat_lasso_train = lassocv.predict(X_train)

上面的代码使我很适合: LassoCV

我也对RidgeCV进行了重复,得到了非常相似的结果。但是,如果我对ElasticNetCV做基本相同的事情,那我看起来很合适,但是输入(X_train)数据看起来很紧缩,因此我的RMS指标非常大:

eln = Pipeline([('scaler', StandardScaler()), ('eln', 
linear_model.ElasticNetCV(normalize=False, n_jobs=-1, cv=5))])

eln.fit(X_train, y_train)
y_hat_elastic_train = eln.predict(X_train)

ElasticNetCV

如果我删除StandardScaler并保持normalize=False设置,问题就消失了,但我不明白为什么。根据{{​​3}},

  

如果您希望标准化,请先使用sklearn.preprocessing.StandardScaler,然后使用normalize = False调用估计量的拟合。

那我的StandardScaler为什么不工作?使用SVR回归器时,我似乎也遇到了同样的问题,但是即使删除了StandardScaler,问题仍然存在。

我认为我对LASSO和Ri​​dge回归非常熟悉,但对Elastic Net和SVM则不太了解。所以可能只是我误解了算法的工作原理。

0 个答案:

没有答案