【发布时间】: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