2010-10-04 34 views
1

J'utilise PyML pour la classification SVM. Cependant, j'ai remarqué que lorsque j'évalue un classificateur multi-classe en utilisant LOO, l'objet de résultats ne rapporte pas la sensibilité et les valeurs de PPV. Au contraire, ils sont 0.0:Obtenir les valeurs de rappel (sensibilité) et de précision (PPV) d'un problème multi-classe dans PyML

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 

J'ai regardé le code, mais ne pouvait pas comprendre ce qui se passe mal ici. Est-ce que quelqu'un a une solution de contournement pour cela?

Répondre

4

Vous ne pouvez pas obtenir les mesures habituelles de précision/rappel sur un problème multi-classes. Vous devez obtenir Precision/Recall pour chaque classe, et vous pouvez calculer une moyenne pondérée.

Je ne connais pas les spécificités de PyML, mais vous pouvez simplement passer en revue les prédictions et les calculer pour chaque classe.