どうもニコイチです。いよいよ今回が最終回となります。はじめの頃はデータ分析を始めたいけど、「どう進めていいかわからない」「実際にどんな成果が出るのかイメージしづらい」と感じていませんでしたか?最終回の今回まで手を動かしていただいた方にはイメージが付いた方も多くいらっしゃると嬉しく思います。わからない部分がありましたら戻って復習していただけると幸いです。この記事では、初心者でもわかりやすいステップで、Pythonを使って「定期預金キャンペーンのアタックリスト」を作成する方法をご紹介します。最後もぜひよろしくおねがいします。
目次
【今回の目標】
- CSVファイルを読み込む
- データを学習・予測に活用する
- 投資収益率(ROI)の高い顧客を抽出する
【ステップ1: 必要なライブラリのインストールとインポート】
# ライブラリをインストールする(必要な場合)
# !pip install pandas scikit-learn matplotlib
# 必要なライブラリをインポート
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
【ステップ2: データの読み込みと確認】
CSVファイルを読み込んで、どんなデータが含まれているかを確認します。
# CSVファイルを読み込む
data = pd.read_csv("data.csv")
# データの最初の5行を表示
print(data.head())
【ステップ3: データの準備】
予測のためにデータを前処理します。
# 特徴量と目的変数を分ける
X = data.drop("y", axis=1) # "y"はターゲット変数
y = data["y"]
# データを訓練用とテスト用に分割
train_X, test_X, train_y, test_y = train_test_split(X, y, test_size=0.2, random_state=42)
【ステップ4: 決定木モデルの学習と評価】
# モデルの作成と学習
model = DecisionTreeClassifier(max_depth=3, random_state=42)
model.fit(train_X, train_y)
# テストデータで予測
pred_y = model.predict(test_X)
# モデルの精度を確認
accuracy = accuracy_score(test_y, pred_y)
print(f"モデルの精度: {accuracy:.2f}")
【ステップ5: アタックリストの作成】
モデルの予測値をもとに、ROIが高い顧客リストを作成します。
# テストデータで申込率を予測
pred_y_proba = model.predict_proba(test_X)[:, 1] # クラス1の確率
# アタックリストの作成
customer_list = pd.DataFrame(index=test_X.index, data={"cvr": pred_y_proba})
customer_list['return'] = 2000 * customer_list['cvr']
customer_list['ROI'] = customer_list['return'] / 300 * 100
# ROIが100%以上の顧客を抽出
attack_list = customer_list[customer_list['ROI'] >= 100].sort_values('ROI', ascending=False)
# アタックリストの確認
print(attack_list.head())
【ステップ6: 結果の解釈】
- ROI(投資収益率)が高い顧客を優先
顧客IDとROIを確認しながら、マーケティング施策に活用できます。
【補足情報】
- 初心者がつまずきやすい点:
predict_proba
の意味:予測結果の「確率」と「クラス」を混同しないよう注意しましょう。sort_values
で昇順・降順を間違えないようにしてください。
- 関連用語の説明
- ROI(投資収益率): 「この投資がどれくらい利益を生むか」を表す指標で、100%を超える場合は利益が出る目安です。
コメント