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))
コメント