pythonで分類問題を評価

person holding blue ballpoint pen on white notebook

sklearn.metrics.classification_report

sklearn.metrics の classification_report を利用することで,分類問題の評価指標である以下4つを一度に計算可能です。

  • Accuracy(精度):すべてのデータの内,正しく分類されたデータの割合。
  • precision(適合率):正(もしくは負)と分類したデータの内,実際に正’(もしくは負)だったデータの割合。
  • recall(再現率):実際に正(もしくは負)であるデータの内,正(もしくは負)であると分類されたデータの割合。
  • f1-score(F値):適合率と再現率の値で調和平均を取ったもの。
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report

# データセットの読み込み
cancer = load_breast_cancer()
X = cancer.data  # 特徴量
y = cancer.target  # ターゲット

# データ分割
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1234)

# ランダムフォレストによる分類
RF = RandomForestClassifier(random_state=1234)  # インスタンス生成
RF.fit(X_train, y_train)  # 学習

# テストデータを分類
prediction = RF.predict(X_test)

# 評価指標の計算
print(
    classification_report(y_true=y_test,
                          y_pred=prediction,
                          target_names=cancer.target_names))
              precision    recall  f1-score   support

   malignant       0.96      0.85      0.90        55
      benign       0.91      0.98      0.95        88

    accuracy                           0.93       143
   macro avg       0.94      0.92      0.92       143
weighted avg       0.93      0.93      0.93       143

評価指標の計算結果をdictionary型で保存する場合

dictionary型で保存することで,データフレームとして読み込み,表示することが可能です。

# 評価指標の計算結果をdictで保存
report = classification_report(y_true=y_test,
                               y_pred=prediction,
                               target_names=cancer.target_names,
                               output_dict=True)
display(pd.DataFrame(report))

コメント