在 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)值的主要内容,如果未能解决你的问题,请参考以下文章
Recall(召回率), Specificity(特异度),Precision(精确度), Sensitivity(灵敏度)
如何从 Python 中的混淆矩阵中获取精度、召回率和 f 度量 [重复]