我在 sklearn.metrics 中使用了 balanced_accuracy_score 和 accuracy_score。
根据文档,这两个指标是相同的,但在我的代码中,第一个是 96%,第二个是 97%,而训练的准确度是 98%
你能给我解释一下这三种精度之间的区别是什么以及它们是如何计算的吗?
注意:该问题是一个三类的多分类问题。
我附上了代码示例。
准确率为 98%
model.compile(loss='categorical_crossentropy',
optimizer=Adam(lr=0.00001),
metrics=['accuracy'])
准确率为 96%
from sklearn.metrics import balanced_accuracy_score
balanced_accuracy_score(all_labels, all_predications)
准确率为 97%
from sklearn.metrics import accuracy_score
accuracy_score(all_labels, all_predications)
最佳答案
据我了解问题(不知道 all_labels、all_predictions 是什么)运行的原因是 balanced_accuracy_score
和 accuracy_score
之间的样本外预测差异通过平衡前一个功能。
accuracy_score
简单地返回您预测正确的标签的百分比(即有 1000 个标签,您准确预测了 980 个,即您得到 98% 的分数。
balanced_accuracy_score
然而,它的工作方式不同,因为它返回每个类的平均准确度,这是一个不同的指标。假设您的 1000 个标签来自 2 个类别,第 1 类有 750 个观测值,第 2 类有 250 个观测值。如果您在每个类别中预测错了 10 个,那么您在第 1 类中的准确率为 740/750= 98.7%,而 240/250=96 % 在类别 2 中。balanced_accuracy_score
将返回 (98.7%+96%)/2 = 97.35%。因此,我相信该程序会根据文档按预期工作。
关于python - balanced_accuracy_score 和 accuracy_score 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55548675/