我正在尝试使用两种不同的方法评估 CNN 模型:
1.
model.evaluate(test_data)
在这种情况下,我得到 79% 的准确度分数:[1.2163524627685547, 0.7924528121948242]
2.
我想获取实际的预测值并使用 scikit-learn 指标来获得准确度分数:
test_prediction=model.predict(test_data)
test_prediction=np.argmax(test_prediction, axis=1)
y_test = np.concatenate([y_batch for X_batch, y_batch in test_data])
metrics.accuracy_score(test_prediction,y_test)
本例中的准确度分数为 21%。
为什么会有差异,哪种方式更可靠?
我很确定,你要么改变了你的预测,要么改变了标签。你的准确率是 79%,另一只手是 21%。
您确定要这样做吗:
test_prediction=model.predict(test_data)
test_prediction=np.argmax(test_prediction, axis=1)
而不是:
test_prediction=model.predict_proba(test_data)
test_prediction=np.argmax(test_prediction, axis=1)
因为我看不出执行
predict
会返回您的标签然后执行 np.argmax
的兴趣。但是,如果您想将 np.argmax
应用于 predict_proba
,那就更有意义了