32.Pythonでデータ分析を始めよう!初心者向けガイド-ROC曲線の描画_チューニング後-

PR表記

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

どうもニコイチです。長かったPythonでデータ分析を始める初心者向けガイドも終盤に突入し、次回が最後となります。いままで色々扱ってみておわかりの通りPythonを使ったデータ分析は、初心者でも取り組みやすいツールやライブラリが豊富に揃っています。このガイドでは、ROC曲線の描画や決定木の可視化を通じて、データ分析の基礎を学びます。実際に提供されたCSVファイル(data.csv)を使って、具体的なステップを詳しく説明します。

目次

データの読み込みと準備

まず、CSVファイルを読み込み、データを確認します。

import pandas as pd

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

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

# データの概要を確認
print(data.info())

データの分割

データを訓練データとテストデータに分割します。

from sklearn.model_selection import train_test_split

# 特徴量とターゲットを分ける
X = data.drop(columns=['target'])  # 'target'は目的変数の列名に置き換えてください
y = data['target']

# 訓練データとテストデータに分割
train_X, test_X, train_y, test_y = train_test_split(X, y, test_size=0.3, random_state=42)

決定木モデルの作成

次に、3つの異なる深さの決定木モデルを作成します。

from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import roc_auc_score

# 3つのモデルを作成
models = {
    'max_depth=2': DecisionTreeClassifier(max_depth=2, random_state=42),
    'max_depth=10': DecisionTreeClassifier(max_depth=10, random_state=42),
    'max_depth=6': DecisionTreeClassifier(max_depth=6, random_state=42)
}

# モデルの学習と評価
predictions = {}
auc_scores = {}
for label, model in models.items():
    model.fit(train_X, train_y)
    pred_y = model.predict_proba(test_X)[:, 1]
    predictions[label] = pred_y
    auc_scores[label] = roc_auc_score(test_y, pred_y)
    print(f'{label}: AUC = {auc_scores[label]:.2f}')

ROC曲線の描画

次に、ROC曲線を描画して比較します。

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

# ROC曲線の計算と描画
plt.figure(figsize=(10, 7))
for label, pred_y in predictions.items():
    fpr, tpr, _ = roc_curve(test_y, pred_y)
    plt.plot(fpr, tpr, label=f'{label} (AUC={auc_scores[label]:.2f})')

# 対角線の描画
plt.plot([0, 1], [0, 1], color='black', linestyle='--')

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

決定木の可視化

最も適したモデルの構造を可視化します。

from sklearn.tree import export_graphviz
from matplotlib import pyplot as plt
from PIL import Image
import pydotplus
import io

# 最適なモデルの選択
best_model_label = max(auc_scores, key=auc_scores.get)
best_model = models[best_model_label]

# 決定木の描画
export_graphviz(best_model, out_file='tree.dot', feature_names=X.columns, class_names=['0', '1'], filled=True, rounded=True)

g = pydotplus.graph_from_dot_file('tree.dot')
gg = g.create_png()
img = io.BytesIO(gg)
img2 = Image.open(img)

# グラフの表示
plt.figure(figsize=(img2.width / 100, img2.height / 100), dpi=75)
plt.imshow(img2)
plt.axis('off')
plt.show()

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

  1. データの列名が不明:適切な列名を指定する必要があります。
  2. ライブラリのインストールpydotplusPillowなど、使用するライブラリがインストールされているか確認しましょう。 pip install pydotplus pillow
  3. データの形式:目的変数がカテゴリカルであることを確認してください。

次のステップ

  • データの前処理や特徴選択を学ぶ
  • 他のモデル(ランダムフォレストやSVM)を試す
  • 実際のビジネスデータに適用してみる

長かったデータ分析ですが、今回は次回が最終回です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次