1

我正在使用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

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

4

2 回答 2

6

您无法在多类问题上获得通常的 Precision/Recall 测量值。你必须得到每个类的精度/召回率,你可以计算一个加权平均值。

我不知道 PyML 的细节,但你可以通过预测并为每个类计算它们。

于 2010-10-11T16:49:35.290 回答
2

对于多类敏感性计算,您可以使用scikit-learn 指标 API

注意average=None每个类别的敏感性。

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

例如,如果Y有 4 个类,则结果将是一个数组,具有每个类的灵敏度。

array([0.96629213, 0.86263736, 0.81920904, 0.7704918])
于 2019-11-17T17:57:08.160 回答