首页 > 解决方案 > ANN回归中的sklearn.model_selection.cross_val_score

问题描述

当我运行以下代码时,我收到

ValueError:模型未配置为计算精度。您应该传递metrics=["accuracy"]给该model.compile()方法。

我的代码:

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

from keras.wrappers.scikit_learn import KerasClassifier
neural_network = KerasClassifier(build_fn=create_network, 
                                 epochs=100, 
                                 batch_size=10, 
                                 verbose=1)

X=feature_normalization(X)[0]


from sklearn.model_selection import cross_val_score
cross_val_score(neural_network, X, y, cv=4)

但我不能在回归模型中使用准确性。cross_val_score 如果不从头开始进行 k 折交叉验证,我如何仍然可以使用任何线索,如下所示:

for i in range(k):
    print(f'Processing fold # {i}')
    X_test = X[i * num_val_samples: (i+1) * num_val_samples]
    y_test = y[i * num_val_samples: (i+1) * num_val_samples]

    X_train = np.concatenate([X[:i * num_val_samples],
                              X[(i+1) * num_val_samples:]],
                              axis=0)
    y_trains = np.concatenate([y[:i * num_val_samples],
                              y[(i+1)*num_val_samples:]],
                              axis=0)
    model = create_network()
    model.fit(X_train,
              y_train,
              epochs=num_epochs,
              batch_size=10,
              verbose=1)
    val_mse, val_mae = model.evaluate(X_test, y_test, verbose=1)
    all_scores.append(val_mae)

标签: python-3.xmachine-learningkerasscikit-learnneural-network

解决方案


Cross_val_score 函数无法识别 keras 模型中使用的指标,默认情况下为 None,尝试将 score='accuracy' 添加到 cross_val_score


推荐阅读