当我运行以下代码时,我收到了
ValueError: 模型未配置计算准确率。您应该在
model.compile()
方法中传递metrics=["accuracy"]
。
我的代码如下:
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 modelfrom keras.wrappers.scikit_learn import KerasClassifierneural_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_scorecross_val_score(neural_network, X, y, cv=4)
但我在回归模型中无法使用准确率。有什么方法可以让我继续使用 cross_val_score
,而不用从头开始编写 k 折交叉验证代码,如下所示:
for i in range(k): print(f'正在处理第 {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)
回答:
Cross_val_score 函数无法识别 keras 模型中使用的度量标准,默认情况下它是 None,尝试在 cross_val_score 中添加 scoring=’accuracy’ 参数