5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

他クラス分類の評価時にはclassification reportとconfusion matrixがめっちゃ便利なので使っていけ

Posted at

はじめに

二値分類では評価がやりやすいですが、他クラス分類時では結構いろんな評価指標あって迷いますよね。
(再現率だ、適合率だAUCだなんだかんだ...)

しかし、pythonには便利なライブラリがあります。

各クラスの適合率や再現率がひと目でわかったり、どのクラスに分類間違いしているかなどを視覚的に理解できるライブラリを紹介します。

他クラス分類時に汎用的で少ないコードで使うこともでき非常に便利な2つのライブラリ。

**- classification report

  • confusion matrix**

テストデータの作成

評価に使用するテストデータを作成します。


import random
import pandas as pd
from sklearn.metrics import classification_report, confusion_matrix
import matplotlib.pyplot as plt
import seaborn as sns

#データ作成
df = pd.DataFrame()

#正解列
df["true"] = [random.randint(0,5) for i in range(200)]

#予測列
#エラーを作るため適当に20個のインデックスで書き換え
err_idx = df.sample(20).index
df["pred"] = df["true"]
df.loc[err_idx, "pred"] = [random.randint(0,5) for i in err_idx]
print(df.shape)
df.head()

image.png

classification report

classification reportを使うと、各クラスの適合率や再現率、F値を簡単に把握できます。
DataFrame形式に落とし込むと表示が楽になります。

df_report = pd.DataFrame(classification_report(df["true"], df["pred"], 
                                               output_dict=True)).T
df_report

image.png

うむ、楽ちん。

confusion matrix

confusion matrixを使うと、各クラスがどのように分類間違いしたかを視覚的に理解できます。

sns.heatmap(confusion_matrix(df["true"], df["pred"]), annot=True)
plt.xlabel("pred")
plt.ylabel('true')

image.png

うん、見やすい。

終わりに

classification reportとconfusion matrixの紹介でした。
少ないコードで視覚的に理解できるので、とりあえず使っておくと便利です。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?