我正在尝试使用 StandardScaler() 和 LogisticRegression() 构建管道。当我使用和不使用管道进行编码时,我会得到不同的结果。这是我没有管道的代码:
clf_LR = linear_model.LogisticRegression()
scalar = StandardScaler()
X_train_std = scalar.fit_transform(X_train)
X_test_std = scalar.fit_transform(X_test)
clf_LR.fit(X_train_std, y_train)
print('Testing score without pipeline: ', clf_LR.score(X_test_std, y_test))
我的管道代码:
pipe_LR = Pipeline([('scaler', StandardScaler()),
('classifier', linear_model.LogisticRegression())
])
pipe_LR.fit(X_train, y_train)
print('Testing score with pipeline: ', pipe_LR.score(X_test, y_test))
这是我的结果:
Testing score with pipeline: 0.821917808219178
Testing score without pipeline: 0.8767123287671232
在尝试调试问题时,数据似乎正在标准化。但是使用管道的结果与在我的原始 X_train 数据上训练模型的结果相匹配(不应用 StandardScaler())。
clf_LR_orig = linear_model.LogisticRegression()
clf_LR_orig.fit(X_train, y_train)
print('Testing score without Standardization: ', clf_LR_orig.score(X_test, y_test))
Testing score without Standardization: 0.821917808219178
在管道的建设中我缺少什么吗?非常感谢!