2016-03-19 6 views
0

私はscikit-learnのドキュメントを見ていて、プロット曲線のサポートのほとんどがバイナリ分類に存在することに気づいた。マルチクラス分類のプロット?

私は、私のマルチクラスクラシファイアのprecision_recall曲線と学習曲線をプロットしたいと思っていました。 precision_recall曲線をプロットし、サイズ(22428,22000)とサイズ(22428)のNP配列されたラベルのまばらなmatrix_testと私のclassiferのための曲線を学習するための任意の方法が存在する場合

model1=LogisticRegression() 
y_d = model1.predict_proba(matrix_test) 

私は思っていましたか?

答えて

2

definiton of Precision and Recallを見ると、高次元に直接変換しない非対称があることがわかります。クラスはCC そして任意、そのうちの一つが「真」とみなされ、そして他の「偽」(あなたも対称性がないことに気づくことができていると言う:逆転"True"と "False"は同じ結果を与えません)。より高い次元では、これは単に直接行うことはできません。

ヒューリスティックな拡張を考え出す方法はたくさんありますが、クラスがC 、...、 mであるとします。 m精度を計算し、クラスC iの視点から呼び出して平均を取ることができます。体重はクラスの重要性を反映しているはずです。

"True"クラスのウェイトが1に選ばれ、 "False"クラスのウェイトが0に選択されているバイナリケースで使用されているスキームとまったく同じであることに注意してください(ここでも強調このスコアの任意の非対称性)。

実装に関しては、これは簡単です。あなたの混乱行列がmであるとします。次に、クラスiの観点から、精度はm[i, i]/np.sum(m[:, i])であり、呼び出しはm[i, i]/np.sum(m[i, :])である。

+0

こんにちは、詳細な説明に感謝します。したがって、学習曲線とprecision_recall_curveの観点から、マルチクラス分類のための視覚化を得ることは不可能ですか? – minks

+0

@minksようこそ。直接ではありません。問題は、概念自体が2つ以上のクラスに対して定義されていないことです。私は出力を減らす方法を概説しようとしました。この減少*をプロットすることができます。何かが不明な場合はLMK。 –