どうもニコイチです。この記事では、Python初心者がデータ分析を始める際のステップを具体例を用いて解説します。特に、初心者がつまずきやすいポイントをわかりやすく説明し、実際のデータを使った実践例も紹介します。
目次
使用するデータ
今回は「定期貯金契約に関するデモデータ(data.csv)」を使用します。このデータを使って、以下の分析を行います。
- データの読み込みと前処理
- モデルの学習
- AUC(Area Under the Curve)の計算
AUCとは?
AUCは、モデルの性能を評価する指標の一つです。AUCが1に近いほど良いモデルであることを示します。たとえば、AUC=0.5の場合は、コインの裏表を当てるのと同じくらいの精度しかないことを意味します。
ステップ1:データの読み込みと前処理
まず、データを読み込みます。この作業にはpandas
というライブラリを使用します。
import pandas as pd
# CSVファイルを読み込む
# id列をインデックスとして設定
file_path = 'data.csv' # CSVファイルのパス
df = pd.read_csv(file_path, index_col='id')
# データの概要を確認
print(df.head())
ポイント:初心者がつまずきやすい部分
- CSVファイルの読み込みエラー: ファイルパスが正しいか確認しましょう。
- データの欠損値:
df.isnull().sum()
で各列の欠損値を確認できます。
次に、データを機械学習用に変換します。
# カテゴリ変数をダミー変数に変換
df = pd.get_dummies(df)
# 目的変数(y)と説明変数(X)に分割
data_X, data_y = df.drop('y', axis=1), df['y']
ステップ2:モデルの学習
データを訓練データとテストデータに分け、決定木を使ってモデルを学習します。
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier as DT
# データを訓練用とテスト用に分割
train_X, test_X, train_y, test_y = train_test_split(data_X, data_y, test_size=0.25, random_state=0)
# 決定木モデルを作成して学習
tree = DT(max_depth=2, random_state=0)
tree.fit(train_X, train_y)
ポイント:初心者がつまずきやすい部分
- テストデータと訓練データの分割:
train_test_split
関数の引数test_size
で、データをどの割合で分割するかを指定します。 - モデルのハイパーパラメータ:
max_depth
は決定木の深さを指定します。値が大きすぎると過学習の原因になります。
ステップ3:AUCの計算
学習したモデルを使ってテストデータを予測し、実測値と比較してAUCを計算します。
from sklearn.metrics import roc_auc_score
# テストデータの予測
pred_y1 = tree.predict_proba(test_X)[:,1]
# 実測値と予測値を使ってAUCを計算
auc1 = roc_auc_score(test_y, pred_y1)
# 評価結果を表示
print(f'AUC: {auc1:.2f}')
ポイント:初心者がつまずきやすい部分
predict_proba
の使い方: 決定木モデルでは、predict_proba
で各クラスの確率を取得できます。- AUCの解釈: AUCが高いほど良いモデルであると考えられます。
結果の解釈
学習したモデルのAUCが高ければ、そのモデルは「定期貯金契約を申し込むかどうか」を比較的正確に予測できるといえます。ただし、現実のデータ分析では、以下の点も考慮する必要があります。
- データが偏っていないか
- 他のモデルや手法と比較した場合の精度
結論
Pythonでデータ分析を始める際には、データの読み込みからモデルの評価までの一連の流れを理解することが重要です。今回の例を参考に、自分のデータに応用してみてください。
おまけ
データ分析をさらに深く学ぶために、以下のポイントも検討してみましょう。
- 他の評価指標(F1スコアや精度)を試してみる。
- 複数のモデル(ランダムフォレストやロジスティック回帰)を比較する。
質問や解説が必要な箇所があれば、ぜひお知らせください!
コメント