Sklearnを使用してGaussianNB分類を実行しました。次のコードを使用してメトリックを計算しようとしました:
print accuracy_score(y_test, y_pred)
print precision_score(y_test, y_pred)
精度スコアは正しく機能していますが、精度スコアの計算では次のエラーが表示されます。
ValueError:ターゲットはマルチクラスですが、average = 'binary'です。別の平均設定を選択してください。
ターゲットはマルチクラスなので、精度、リコールなどのメトリックスコアを取得できますか?
関数呼び出し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 )は次のように伝えています:
'バイナリ':
Pos_labelで指定されたクラスの結果のみを報告します。これは、ターゲット(y_ {true、pred})がバイナリの場合にのみ適用されます。
そのため、問題はラベルがバイナリではなく、おそらくワンホットでエンコードされていることです。幸いなことに、データを処理する他のオプションがあります。
precision_score(y_test, y_pred, average=None)
は各クラスの精度スコアを返しますが、
precision_score(y_test, y_pred, average='micro')
は、tp /(tp + fp)の合計比率を返します
average
以外のbinary
オプションを選択した場合、pos_label
引数は無視されます。