どうもニコイチです。前回はグリッドサーチについて学びました。今回は、パラメータの評価についてもう少し詳しく見ていきたいと思います。添付されたCSVデータを使用し、グリッドサーチの実施やスコアの可視化、最適なモデルでの評価までを段階的に説明します。
Pythonでデータ分析を始めよう!~グリッドサーチと可視化で学ぶ基本ステップ~
はじめに
データ分析を始めたばかりの方にとって、何をどのように進めれば良いのか悩むことが多いですよね。本記事では、実際のデータを使いながら、グリッドサーチを活用したモデルの最適化や、結果の可視化までを詳しく解説します。初心者がつまづきやすいポイントも、具体例や丁寧な説明でサポートします!
使用するデータ
今回は、添付されたCSVファイル「data.csv」を用いて分析を進めます。このデータは、定期貯金契約の有無に関する情報を含んでいます。
必要なライブラリのインストールとインポート
以下のライブラリを使用します。環境にインストールされていない場合は、以下のコマンドを実行してください。
pip install pandas scikit-learn matplotlib
インポートコードは以下の通りです。
import pandas as pd
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import roc_auc_score
import matplotlib.pyplot as plt
ステップ1:データの読み込みと分割
まず、データを読み込み、モデル構築の準備を行います。
# データの読み込み
data = pd.read_csv('/mnt/data/data.csv')
# 説明変数と目的変数の分割
X = data.drop('target', axis=1) # target列を目的変数と仮定
y = data['target']
# 訓練データと評価データの分割
train_X, test_X, train_y, test_y = train_test_split(X, y, test_size=0.2, random_state=42)
ポイント:
- 訓練データ: モデルを学習させるためのデータ
- 評価データ: 学習したモデルの性能を確認するためのデータ
ステップ2:グリッドサーチの準備と実行
次に、グリッドサーチを設定し、決定木モデルの最適なパラメータを探します。
# 決定木モデルの準備
model = DecisionTreeClassifier(random_state=42)
# 探索するパラメータの範囲
parameters = {'max_depth': [2, 3, 4, 5, 6, 7, 8, 9, 10]}
# グリッドサーチの設定
gcv = GridSearchCV(model, parameters, cv=5, scoring='roc_auc', return_train_score=True)
# グリッドサーチの実行
gcv.fit(train_X, train_y)
# 最適なパラメータの確認
print("Best Parameters:", gcv.best_params_)
ステップ3:スコアの可視化
探索したパラメータごとのスコアを比較するため、グラフを描画します。
# スコアの取得
train_score = gcv.cv_results_["mean_train_score"]
test_score = gcv.cv_results_["mean_test_score"]
# グラフの描画
plt.plot(parameters['max_depth'], train_score, label="train_score", marker='o')
plt.plot(parameters['max_depth'], test_score, label="test_score", marker='o')
plt.title('Train Score vs Test Score')
plt.xlabel('Max Depth')
plt.ylabel('AUC')
plt.legend()
plt.grid()
plt.show()
グラフの解釈:
- train_scoreが高いがtest_scoreが低い場合: モデルが訓練データに「過学習」している可能性があります。
- train_scoreとtest_scoreが近い場合: モデルが良好な汎化性能を持っていると考えられます。
ステップ4:最適モデルでの予測と評価
最適なパラメータを用いて、評価データでモデルの性能を確認します。
# 最適なモデルの取得
best_model = gcv.best_estimator_
# 評価データでの予測
pred_y = best_model.predict_proba(test_X)[:, 1]
# AUCスコアの計算
auc = roc_auc_score(test_y, pred_y)
# 結果の表示
print("AUC of Best Model:", auc)
おわりに
ここまでで、初心者の方がつまづきやすいポイントを丁寧に説明しながら、グリッドサーチを用いたモデル最適化のプロセスを解説しました。グラフを活用した結果の可視化や、最適なモデルの評価も含めた一連の流れを体験していただけたと思います。
次のステップとして、他のモデルや異なるデータセットを試すことで、より幅広い分析スキルを身につけましょう!
質問があればお気軽にどうぞ!次に知りたい内容もぜひ教えてください!
コメント