【发布时间】:2017-10-04 15:07:50
【问题描述】:
我正在比较使用 Scikit-Learn StandardScaler 的两个关于 KerasRegressor 的程序的性能:一个使用 Scikit-Learn Pipeline 的程序和一个没有 Pipeline 的程序。
方案一:
estimators = []
estimators.append(('standardise', StandardScaler()))
estimators.append(('multiLayerPerceptron', KerasRegressor(build_fn=build_nn, nb_epoch=num_epochs, batch_size=10, verbose=0)))
pipeline = Pipeline(estimators)
log = pipeline.fit(X_train, Y_train)
Y_deep = pipeline.predict(X_test)
方案二:
scale = StandardScaler()
X_train = scale.fit_transform(X_train)
X_test = scale.fit_transform(X_test)
model_np = KerasRegressor(build_fn=build_nn, nb_epoch=num_epochs, batch_size=10, verbose=0)
log = model_np.fit(X_train, Y_train)
Y_deep = model_np.predict(X_test)
我的问题是程序 1 的 R2 分数可以达到 0.98(平均 3 次试验),而程序 2 的 R2 分数只能达到 0.84(平均 3 次试验)。谁能解释这两个程序之间的区别?
【问题讨论】:
-
看来你是独立地重新缩放每个数据集,你应该使用
X_train = scale.fit_transform(X_train)和X_test = scale.transform(X_test)
标签: python scikit-learn keras pipeline