model.evaluate 和metrics.accuracy_score 之间的区别

问题描述 投票:0回答:1

我正在尝试使用两种不同的方法评估 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%。

为什么会有差异,哪种方式更可靠?

machine-learning deep-learning conv-neural-network metrics evaluation
1个回答
0
投票

我很确定,你要么改变了你的预测,要么改变了标签。你的准确率是 79%,另一只手是 21%。

  • 1-0.79=0.21 和 1-0.21=0.79%

您确定要这样做吗:

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
,那就更有意义了

© www.soinside.com 2019 - 2024. All rights reserved.