4

マルチラベル分類でscikitでマクロF1を計算しようとしています

from sklearn.metrics import f1_score

y_true = [[1,2,3]]
y_pred = [[1,2,3]]

print f1_score(y_true, y_pred, average='macro')

ただし、エラーメッセージで失敗します

ValueError: multiclass-multioutput is not supported

マルチラベル分類でマクロ F1 を計算するにはどうすればよいですか?

4

1 に答える 1

8

現在の scikit-learn リリースでは、コードによって次の警告が発生します。

DeprecationWarning: Direct support for sequence of sequences multilabel
    representation will be unavailable from version 0.17. Use
    sklearn.preprocessing.MultiLabelBinarizer to convert to a label
    indicator representation.

このアドバイスに従って、 を使用sklearn.preprocessing.MultiLabelBinarizerして、このマルチラベル クラスを で受け入れられる形式に変換できますf1_score。例えば:

from sklearn.preprocessing import MultiLabelBinarizer
from sklearn.metrics import f1_score

y_true = [[1,2,3]]
y_pred = [[1,2,3]]

m = MultiLabelBinarizer().fit(y_true)

f1_score(m.transform(y_true),
         m.transform(y_pred),
         average='macro')
# 1.0
于 2015-10-25T14:09:48.317 に答える