2017-08-25 30 views
6

私はsklearnを使ってGaussianNB分類を行っています。私は、次のコードを使用してメトリックを計算しようとした:マルチクラス分類のsklearnメトリック

  print accuracy_score(y_test, y_pred) 
     print precision_score(y_test, y_pred) 

精度スコアが正常に動作しているが、精度スコア計算はとしてエラーを示している。

ValueError: Target is multiclass but average='binary'. Please choose another average setting.

ターゲットはマルチクラスであるので、私はメトリックスコアを有することができます精度、リコールなど?

答えて

10

precision_score(y_test, y_pred)という関数呼び出しは、precision_score(y_test, y_pred, pos_label=1, average='binary')に相当します。 ドキュメント(http://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_score.html)が教えてくれる:

'binary':

Only report results for the class specified by pos_label. This is applicable only if targets (y_{true,pred}) are binary.

だから、問題はあなたのラベルがバイナリではないということですが、おそらくワンホットエンコードされました。幸いなことに、自分のデータを扱う必要があり、他の選択肢がある:

precision_score(y_test, y_pred, average=None)

precision_score(y_test, y_pred, average='micro')

TP /(TP + FP)の を合計割合が返されながら、各クラスの精度スコアが返され

binaryよりも別のaverageオプションを選択すると、pos_label引数が無視されます。

関連する問題