テキスト文書(22000)を100クラスに分類するためにscikit-learnを使用しています。混乱行列の計算にはscikit-learnの混乱行列法を使用します。
model1 = LogisticRegression()
model1 = model1.fit(matrix, labels)
pred = model1.predict(test_matrix)
cm=metrics.confusion_matrix(test_labels,pred)
print(cm)
plt.imshow(cm, cmap='binary')
これは私の混乱マトリックスがどのように見えるかです:
[[3962 325 0 ..., 0 0 0]
[ 250 2765 0 ..., 0 0 0]
[ 2 8 17 ..., 0 0 0]
...,
[ 1 6 0 ..., 5 0 0]
[ 1 1 0 ..., 0 0 0]
[ 9 0 0 ..., 0 0 9]]
ただし、明確なまたは読みやすいプロットは表示されません。これを行うためのより良い方法はありますか?
plt.matshow()
の代わりにplt.imshow()
を使用するか、seabornモジュールのheatmap
( ドキュメントを参照 )を使用して混同行列をプロットできます。
import seaborn as sn
import pandas as pd
import matplotlib.pyplot as plt
array = [[33,2,0,0,0,0,0,0,0,1,3],
[3,31,0,0,0,0,0,0,0,0,0],
[0,4,41,0,0,0,0,0,0,0,1],
[0,1,0,30,0,6,0,0,0,0,1],
[0,0,0,0,38,10,0,0,0,0,0],
[0,0,0,3,1,39,0,0,0,0,4],
[0,2,2,0,4,1,31,0,0,0,2],
[0,1,0,0,0,0,0,36,0,2,0],
[0,0,0,0,0,0,1,5,37,5,1],
[3,0,0,0,0,0,0,0,0,39,0],
[0,0,0,0,0,0,0,0,0,0,38]]
df_cm = pd.DataFrame(array, index = [i for i in "ABCDEFGHIJK"],
columns = [i for i in "ABCDEFGHIJK"])
plt.figure(figsize = (10,7))
sn.heatmap(df_cm, annot=True)
@bninopaulの答えは初心者向けではありません
ここに「コピーして実行」できるコードがあります
import seaborn as sn
import pandas as pd
import matplotlib.pyplot as plt
array = [[13,1,1,0,2,0],
[3,9,6,0,1,0],
[0,0,16,2,0,0],
[0,0,0,13,0,0],
[0,0,0,0,15,0],
[0,0,1,0,0,15]]
df_cm = pd.DataFrame(array, range(6),
range(6))
#plt.figure(figsize = (10,7))
sn.set(font_scale=1.4)#for label size
sn.heatmap(df_cm, annot=True,annot_kws={"size": 16})# font size
必要な場合詳細データ混同マトリックスで、 "totals column"および "totals line"、およびpercentsを含む=(%)各セルで、matlab defaultのように(下の画像を参照)
ヒートマップおよびその他のオプションを含む...
Githubで共有されている上記のモジュールをお楽しみください。 )
https://github.com/wcipriano/pretty-print-confusion-matrix
このモジュールはタスクを簡単に実行でき、CMをカスタマイズするための多くのパラメーターを使用して上記の出力を生成します。