python - balanced_accuracy_score 和 accuracy_score 之间的区别

标签 python scikit-learn deep-learning

我在 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_scoreaccuracy_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/

相关文章:

python - sklearn ColumnTransformer : Duplicate columns in transformers

python - 如何分割特征和标签

python - django文件上传到动态路径

python - 使用 pexpect 进行 ssh 密码提示时出现 EOF 异常

python - 运行 python 脚本在 Amazon RDS 数据库实例上创建我的架构

python - 使用标签将列传递给输入器的正确方法?

python - 具有距离条件的最近邻加入

java - 使用 deeplearning4j 训练简单的神经网络

machine-learning - 用于音乐的 LSTM 自动编码器 - Keras [序列到序列]

machine-learning - 端到端时尚卷积神经网络(CNN)是什么意思?