我按照以下方式创建了一个管道(使用Keras Scikit-Learn API)
estimators = []
estimators.append(('standardize', StandardScaler()))
estimators.append(('mlp', KerasRegressor(build_fn=baseline_model, nb_epoch=50, batch_size=5, verbose=0)))
pipeline = Pipeline(estimators)
并适合
pipeline.fit(trainX,trainY)
如果我用pipline.predict(testX)
预测,我(相信)我会得到标准化的预测。
如何预测testX
以使predictedY
与实际(未触及)testY
的比例相同(即非标准化预测,而是实际值)?我看到有inverse_transform
method for Pipeline,但似乎只是为了还原已转换的X
。
答案 0 :(得分:5)
完全。管道中的StandardScaler()仅映射pipeline.fit(trainX,trainY)的输入(trainX)。
所以,如果你的模型适合于训练,你需要将它标准化,你应该将你的trainY映射为
{{1}}
inverse_transform()函数根据StandardScaler()。fit()中计算的标准差和平均值来映射其值。
如您所述,您可以随时调整模型而不缩放Y,但这可能很危险,具体取决于您的数据,因为它可能导致您的模型过度拟合。你必须测试它;)