在 PyML 中获取多类问题的召回率(灵敏度)和精度(PPV)值

Posted

技术标签:

【中文标题】在 PyML 中获取多类问题的召回率(灵敏度)和精度(PPV)值【英文标题】:Get recall (sensitivity) and precision (PPV) values of a multi-class problem in PyML 【发布时间】:2011-04-20 20:07:54 【问题描述】:

我正在使用PyML 进行 SVM 分类。但是,我注意到当我使用 LOO 评估多类分类器时,结果对象不会报告敏感度和 PPV 值。相反,它们是 0.0:

from PyML import *
from PyML.classifiers import multi

mc = multi.OneAgainstRest(SVM())
data = VectorDataSet('iris.data', labelsColumn=-1)
result = mc.loo(data)

result.getSuccessRate()
>>> 0.95333333333333337
result.getPPV()
>>> 0.0
result.getSensitivity()
>>> 0.0

我查看了代码,但无法弄清楚这里出了什么问题。有人可以解决这个问题吗?

【问题讨论】:

【参考方案1】:

对于多类灵敏度计算,您可以使用scikit-learn metrics API。

通知average=None,每个类别的敏感性独立。

sklearn.metrics.recall_score(Y_true,Y_prediction,average=None)

例如,如果Y 有 4 个类,则结果将是一个数组,每个类都具有敏感性。

array([0.96629213, 0.86263736, 0.81920904, 0.7704918])

【讨论】:

【参考方案2】:

对于多类问题,您无法获得通常的 Precision/Recall 测量值。您必须获得每个类的 Precision/Recall,并且可以计算加权平均值。

我不知道 PyML 的具体细节,但您可以查看预测并为每个类计算它们。

【讨论】:

以上是关于在 PyML 中获取多类问题的召回率(灵敏度)和精度(PPV)值的主要内容,如果未能解决你的问题,请参考以下文章

多类模型的准确率、精度和召回率

从 CSV 多类数据集中计算精度和召回率。

Recall(召回率), Specificity(特异度),Precision(精确度), Sensitivity(灵敏度)

如何从 Python 中的混淆矩阵中获取精度、召回率和 f 度量 [重复]

使用 10 折交叉验证获取分类报告,说明多项式朴素贝叶斯的分类精度和召回率

在 Keras 分类神经网络中进行精度交易以获得更好的召回率