这是一个非常小的 sklearn 片段:
logistic = linear_model.LogisticRegression()
pipe = Pipeline(steps=[
('scaler_2', MinMaxScaler()),
('pca', decomposition.NMF(6)),
('logistic', logistic),
])
from sklearn.cross_validation import train_test_split
Xtrain, Xtest, ytrain, ytest = train_test_split(X, y, test_size=0.2)
pipe.fit(Xtrain, ytrain)
ypred = pipe.predict(Xtest)
我会收到这个错误:
raise ValueError("Negative values in data passed to %s" % whom)
ValueError: Negative values in data passed to NMF (input X)
根据这个问题: Scaling test data to 0 and 1 using MinMaxScaler
我知道这是因为
这是因为我的测试数据中的最小值低于训练数据,其中 min max scaler 是合适的
但我想知道,这是一个错误吗?MinMaxScaler(所有缩放器)似乎应该在我进行预测之前应用,它不应该依赖于以前拟合的训练数据,对吗?
或者我怎样才能正确地使用带有管道的预处理缩放器?
谢谢。