1

SVM分類にPyMLを使用しています。ただし、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

マルチクラス問題では、通常の適合率/再現率の測定値を取得できません。クラスごとに適合率/再現率を取得する必要があり、加重平均を計算できます。

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 に答える