26.Pythonでデータ分析を始めよう!初心者向けガイド-ROC曲線入門編-

PR表記

※アフィリエイト広告を利用しています

どうもニコイチです。前回AUCについて学びました。今回はデータ分析の一環として、モデルの性能を評価する際に「ROC曲線(Receiver Operating Characteristic Curve)」がよく使われます。この曲線は、モデルの予測精度を視覚的に確認するためのグラフで、特に分類問題において役立ちます。この記事では、Pythonを使ってROC曲線を描く手順を、デモデータ(CSVファイル)を用いて解説します。

目次

前提条件

以下の準備を整えましょう:

  1. Pythonがインストールされていること
  2. 必要なライブラリがインストールされていること pip install numpy pandas scikit-learn matplotlib

手順

1. データの読み込みと確認

まず、CSVファイルを読み込みます。

import pandas as pd

# CSVファイルを読み込み
data = pd.read_csv('/mnt/data/data.csv')

# データの先頭5行を確認
print(data.head())

アップロードされたデータの内容を確認して、どの列が「実測値」と「予測値」に該当するかを把握してください。

2. 必要なライブラリをインポート

次に、ROC曲線を描画するためのライブラリをインポートします。

from sklearn.metrics import roc_curve, roc_auc_score
import matplotlib.pyplot as plt

3. データの準備

実測値(正解ラベル)と予測値を指定します。

# 実測値と予測値の列名を設定
true_labels = data['actual']  # 実測値の列
predictions = data['predicted']  # 予測値の列

初心者向けポイント:

  • 実測値とは、実際の正解ラベル(例: 0 または 1)。
  • 予測値とは、モデルが出力した予測の確率や値。

4. ROC曲線の計算と描画

roc_curve関数を使って、偽陽性率(FPR)と真陽性率(TPR)を計算します。

# ROC曲線を計算
fpr, tpr, thresholds = roc_curve(true_labels, predictions)

# AUCスコアの計算
auc = roc_auc_score(true_labels, predictions)

# ROC曲線の描画
plt.plot(fpr, tpr, label='ROC Curve (AUC={:.2f})'.format(auc))
plt.plot([0, 1], [0, 1], color='black', linestyle='dashed', label='Random Guess')

# グラフの装飾
plt.title('ROC Curve')
plt.xlabel('False Positive Rate (FPR)')
plt.ylabel('True Positive Rate (TPR)')
plt.legend()
plt.grid()
plt.show()

実行結果の解釈

  1. ROC曲線の形状:曲線が左上に近いほど、モデルの予測精度が高いことを示します。
  2. AUC(Area Under Curve)値:0.5がランダム予測、1.0に近いほど良い性能を意味します。

初心者がつまづきやすいポイント

  • データ形式の確認:実測値と予測値が数値(0と1や確率値)である必要があります。
    • 実測値がカテゴリ(例: “Yes” や “No”)の場合、0と1に変換します。
    data['actual'] = data['actual'].map({'No': 0, 'Yes': 1})
  • 予測値が確率でない場合:モデルの出力がクラス(例: 0 または 1)なら、確率に変換する必要があります。 predictions = model.predict_proba(X_test)[:, 1]
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次