1. ホーム
  2. python

[解決済み] ラベルと混同行列のプロット

2022-12-02 03:57:40

質問

分類器の性能を可視化するために混同行列をプロットしたいのですが、ラベルの番号だけが表示され、ラベルそのものは表示されません。

from sklearn.metrics import confusion_matrix
import pylab as pl
y_test=['business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business']

pred=array(['health', 'business', 'business', 'business', 'business',
       'business', 'health', 'health', 'business', 'business', 'business',
       'business', 'business', 'business', 'business', 'business',
       'health', 'health', 'business', 'health'], 
      dtype='|S8')

cm = confusion_matrix(y_test, pred)
pl.matshow(cm)
pl.title('Confusion matrix of the classifier')
pl.colorbar()
pl.show()

混乱マトリックスにラベル(健康、ビジネス...など)を追加するにはどうすればよいですか?

どのように解決するのですか?

でヒントがあるように この質問 を開く必要があります。 低レベルアーティストAPI 呼び出した matplotlib 関数から渡された図形と軸オブジェクトを格納することで、( fig , axcax という変数があります)。そして、デフォルトのX軸とY軸の目盛りを次のようにして置き換えることができます。 set_xticklabels / set_yticklabels :

from sklearn.metrics import confusion_matrix

labels = ['business', 'health']
cm = confusion_matrix(y_test, pred, labels)
print(cm)
fig = plt.figure()
ax = fig.add_subplot(111)
cax = ax.matshow(cm)
plt.title('Confusion matrix of the classifier')
fig.colorbar(cax)
ax.set_xticklabels([''] + labels)
ax.set_yticklabels([''] + labels)
plt.xlabel('Predicted')
plt.ylabel('True')
plt.show()

を渡したことに注意してください。 labels のリストを confusion_matrix 関数に渡して、目盛りと一致するように適切にソートされることを確認します。

この結果、次のような図になります。