Python 平衡的准确度得分和准确度得分之间的差异

Python 平衡的准确度得分和准确度得分之间的差异,python,scikit-learn,deep-learning,Python,Scikit Learn,Deep Learning,我在sklearn.metrics中使用了平衡的精度分数和精度分数 根据文档,这两个指标是相同的,但在我的代码中,第一个是96%,第二个是97%,而训练的准确率是98% 你能给我解释一下这三种精度之间的区别以及如何计算它们吗 注:该问题是一个具有三类的多分类问题 我附上代码样本 准确率为98% model.compile(loss='categorical_crossentropy', optimizer=Adam(lr=0.00001),

我在sklearn.metrics中使用了平衡的精度分数和精度分数

根据文档,这两个指标是相同的,但在我的代码中,第一个是96%,第二个是97%,而训练的准确率是98%

你能给我解释一下这三种精度之间的区别以及如何计算它们吗

注:该问题是一个具有三类的多分类问题

我附上代码样本

准确率为98%

model.compile(loss='categorical_crossentropy',
              optimizer=Adam(lr=0.00001),
              metrics=['accuracy'])
from sklearn.metrics import balanced_accuracy_score
balanced_accuracy_score(all_labels, all_predications)
from sklearn.metrics import accuracy_score
accuracy_score(all_labels, all_predications)
准确率为96%

model.compile(loss='categorical_crossentropy',
              optimizer=Adam(lr=0.00001),
              metrics=['accuracy'])
from sklearn.metrics import balanced_accuracy_score
balanced_accuracy_score(all_labels, all_predications)
from sklearn.metrics import accuracy_score
accuracy_score(all_labels, all_predications)
准确率为97%

model.compile(loss='categorical_crossentropy',
              optimizer=Adam(lr=0.00001),
              metrics=['accuracy'])
from sklearn.metrics import balanced_accuracy_score
balanced_accuracy_score(all_labels, all_predications)
from sklearn.metrics import accuracy_score
accuracy_score(all_labels, all_predications)

就我所理解的问题(不知道所有的标签,所有的预测)是如何运行的,
balanced\u accurity\u score
accurity\u score
之间的样本外预测差异是由前一个函数的平衡引起的

只需返回您正确预测的标签百分比(即有1000个标签,您准确预测了980个标签,即您得到98%的分数)

然而,它的工作原理不同,因为它返回每个类的平均准确度,这是一个不同的度量。假设您的1000个标签来自两个类,在类1中有750个观察值,在类2中有250个观察值。如果您在每个类中都未预测到10个,则在类1中的准确度为740/750=98.7%,在类2中的准确度为240/250=96%。
将返回(98.7%+96%)/2=97.35%。因此,根据文档,我相信该程序将按预期工作。

精度=tp+tn/(tp+tn+fp+fn)对于不平衡的类不起作用

因此,我们可以使用平衡精度=TPR+TNR/2

TPR=真阳性率=tp/(tp+fn):也称为“敏感性”

TNR=真阴性率=tn/(tn+fp):也被称为“特异性”

平衡准确度给出的结果与ROC AUC分数几乎相同

链接:

一,

二,


3

你忘了分享你的代码,这会让你更容易重现你的问题我添加了代码样本奇怪的是,
balanced\u accurity\u score
的文档说这是平均召回率,我认为这应该是一个错误。我想这取决于你对召回率的定义。在Sklearn的在线指南中,他们引用了Mosley(2013)()并给出了作者对回忆的定义,
平衡的准确度评分计算似乎是准确的。然后,你可以使用其他加权规则,而不仅仅是将每个类别的回忆总和除以所有类别的数量。