and*_*ndy 5 python machine-learning scikit-learn keras data-science
我按如下方式创建了一个管道(使用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)
Run Code Online (Sandbox Code Playgroud)
并适合它
pipeline.fit(trainX,trainY)
Run Code Online (Sandbox Code Playgroud)
如果我预测pipline.predict(testX),我(相信)我会得到标准化的预测.
如何预测上testX,使得predictedY它在同等规模的实际(不变)testY(即不规范的预测,而是实际值)?我看到有一种inverse_transform方法用于管道,但似乎只是为了恢复转换X.
究竟。管道中的StandardScaler()仅映射pipe.fit(trainX,trainY)的输入(trainX)。
因此,如果您将模型拟合为近似trainY,并且还需要对其进行标准化,则应将trainY映射为
scalerY = StandardScaler().fit(trainY) # fit y scaler
pipeline.fit(trainX, scalerY.transform(trainY)) # fit your pipeline to scaled Y
testY = scalerY.inverse_transform(pipeline.predict(testX)) # predict and rescale
Run Code Online (Sandbox Code Playgroud)
inverse_transform()函数考虑标准偏差和在StandardScaler()。fit()中计算出的均值来映射其值。
正如您所提到的,您始终可以在不缩放Y的情况下拟合模型,但这可能会很危险,具体取决于您的数据,因为它可能导致模型过度拟合。您必须测试它;)
| 归档时间: |
|
| 查看次数: |
1976 次 |
| 最近记录: |