如何使用KerasRegressor和sklearn管道获得想要的分数?

时间:2018-11-30 03:49:23

标签: scikit-learn keras pipeline

我想将Keras模型插入scikit-learn管道,但是当我使用pipeline.score时,我很困惑。这是代码:

from keras import models
from keras import layers
from keras.wrappers.scikit_learn import KerasRegressor  
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline

def build_model():
    model = models.Sequential()
    model.add(
        layers.Dense(
            64, activation='relu', input_shape=(train_data.shape[1], )))
    model.add(layers.Dense(64, activation='relu'))
    model.add(layers.Dense(1))
    model.compile(optimizer='rmsprop', loss='mse', metrics=['mae'])
    return model


model = KerasRegressor(
    build_fn=build_model, epochs=90, batch_size=1, verbose=0)

pipe_network = Pipeline([('scl', StandardScaler()), ('clf', model)])
pipe_network.fit(train_data, train_targets)

模型得分是:

pipe_network.score(test_data, test_targets)
>>> -12.813292971994802

分数是多少?我想得到类似评估函数输出的结果,该怎么办?

stdsc = StandardScaler()
train_data_std = stdsc.fit_transform(train_data)
test_data_std = stdsc.transform(test_data)

network = build_model()
network.fit(train_data_std, train_targets, epochs=90, batch_size=1, verbose=0)

network.evaluate(test_data_std, test_targets)
>>> [12.681396334779029, 2.479423579047708]

感谢您的关注。

0 个答案:

没有答案