【问题标题】:sklearn.model_selection.cross_val_score in ANN regressionANN回归中的sklearn.model_selection.cross_val_score
【发布时间】:2020-08-20 16:21:24
【问题描述】:

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

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)

【问题讨论】:

  • 你有一个回归问题,因此你不应该使用 KerasClassifier 包装器,而是使用 KerasRegressor 包装器。
  • @desertnaut,谢谢!我的脚本开始执行!但是还有一个问题cross_val_score 只返回mean_absolute_percentage_error,无论我在估算器上选择了哪种评分方法。例如,如果我更改为 metrics=['mean_absolute_error'] cross_val_score 将再次返回 mean_absolute_percentage_error。请告诉我是否可以更改。
  • 评论不是此类讨论的好地方。我建议您关闭此线程并打开一个新问题,详细描述新情况和问题。

标签: python-3.x machine-learning keras scikit-learn neural-network


【解决方案1】:

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

【讨论】:

  • 我已经使用包装器更新了代码,但仍然存在准确性问题,因为我无法在回归模型中使用它。
猜你喜欢
  • 2021-03-26
  • 2020-01-28
  • 2017-03-22
  • 1970-01-01
  • 2021-01-13
  • 2020-02-23
  • 2019-11-16
  • 2013-07-06
  • 1970-01-01
相关资源
最近更新 更多