ホームページ >バックエンド開発 >Python チュートリアル >顧客離れを予測するためのデシジョン ツリー分類子の例

顧客離れを予測するためのデシジョン ツリー分類子の例

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-10 13:30:11948ブラウズ

Decision Tree Classifier Example to Predict Customer Churn

顧客離れを予測するためのデシジョン ツリー分類子の例

概要

このプロジェクトでは、デシジョン ツリー分類子を使用して顧客の離脱 (顧客がサービスを離れるかどうか) を予測する方法を示します。このデータセットには、顧客が離脱するかどうかを予測することを目的として、年齢月額料金カスタマー サービスへの通話などの機能が含まれています。

モデルは Scikit-learn のデシジョン ツリー分類器を使用してトレーニングされ、コードはデシジョン ツリーを視覚化して、モデルがどのように意思決定を行っているかをよりよく理解します。


使用されている技術

  • Python 3.x: モデルの構築に使用される主な言語。
  • Pandas: データ操作とデータセットの処理用。
  • Matplotlib: データ視覚化 (デシジョン ツリーのプロット) 用。
  • Scikit-learn: モデルのトレーニングと評価を含む機械学習用。

手順の説明

1. 必要なライブラリをインポートします

import pandas as pd
import matplotlib.pyplot as plt
import warnings
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn import tree
  • パンダ (pd):

    • これは、データ操作と DataFrame 形式へのデータのロードに使用されます。 DataFrame を使用すると、テーブル (行と列) のような構造化データを整理および操作できます。
  • Matplotlib (plt):

    • これは、データを視覚化するために使用されるプロット ライブラリです。ここでは、デシジョン ツリーをグラフィカルにプロットするために使用されており、ツリーの各ノードで意思決定がどのように行われるかを理解するのに役立ちます。
  • 警告 (警告):

    • 警告モジュールは、警告を抑制または処理するために使用されます。このコードでは、出力をクリーンで読みやすい状態に保つために、不要な警告を無視しています。
  • Scikit-learn ライブラリ:

    • train_test_split: この関数は、データセットをトレーニングとテストのサブセットに分割します。トレーニング データはモデルの適合に使用され、テスト データはパフォーマンスの評価に使用されます。
    • DecisionTreeClassifier: これは、データを分類し、顧客離れを予測するために使用されるモデルです。デシジョン ツリーは、特徴に基づいて意思決定のツリー状モデルを作成することで機能します。
    • accuracy_score: この関数は、予測値とターゲット変数 (チャーン) の実際の値を比較することによって、モデルの精度を計算します。
    • tree: このモジュールには、トレーニング後のデシジョン ツリーを視覚化するための関数が含まれています。

2. 警告の抑制

import pandas as pd
import matplotlib.pyplot as plt
import warnings
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn import tree
  • この行は、Python にすべての警告を無視するように指示します。これは、モデルを実行していて、警告 (非推奨の関数に関する警告など) によって出力が煩雑になることを望まない場合に役立ちます。

3. 合成データセットの作成

warnings.filterwarnings("ignore")
  • ここでは、プロジェクトの 合成データセット を作成します。このデータセットは、年齢、月次料金、CustomerServiceCalls、およびターゲット変数 Churn (顧客が解約したかどうか) などの機能を使用して、通信会社の顧客情報をシミュレートします。

    • CustomerID: 各顧客の一意の識別子。
    • 年齢: お客様の年齢
    • MonthlyCharge: 顧客の毎月の請求書。
    • CustomerServiceCalls: 顧客がカスタマー サービスに電話した回数。
    • 解約: 顧客が解約したかどうか (はい/いいえ)。
  • Pandas DataFrame: データは、2 次元のラベル付きデータ構造である DataFrame (df) として構造化されており、データの操作と分析が容易になります。

4. データを特徴とターゲット変数に分割する

import pandas as pd
import matplotlib.pyplot as plt
import warnings
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn import tree
  • 特徴 (X): ターゲットを予測するために使用される独立変数。この場合、Age、MonthlyCharge、CustomerServiceCalls が含まれます。
  • ターゲット変数 (y): 従属変数。予測しようとしている値です。ここでは、顧客が離脱するかどうかを示す Churn 列です。

5. データをトレーニング セットとテスト セットに分割する

warnings.filterwarnings("ignore")
  • train_test_split は、データセットを 2 つの部分、トレーニング セット (モデルのトレーニングに使用される) と テスト セット (モデルの評価に使用される) に分割します。
    • test_size=0.3: データの 30% がテスト用に確保され、残りの 70% がトレーニングに使用されます。
    • random_state=42 は、乱数生成器のシードを固定することで結果の再現性を保証します。

6. デシジョン ツリー モデルのトレーニング

data = {
    'CustomerID': range(1, 101),  # Unique ID for each customer
    'Age': [20, 25, 30, 35, 40, 45, 50, 55, 60, 65]*10,  # Age of customers
    'MonthlyCharge': [50, 60, 70, 80, 90, 100, 110, 120, 130, 140]*10,  # Monthly bill amount
    'CustomerServiceCalls': [1, 2, 3, 4, 0, 1, 2, 3, 4, 0]*10,  # Number of customer service calls
    'Churn': ['No', 'No', 'Yes', 'No', 'Yes', 'No', 'Yes', 'Yes', 'No', 'Yes']*10  # Churn status
}

df = pd.DataFrame(data)
print(df.head())
  • DecisionTreeClassifier() はデシジョン ツリー モデルを初期化します。
  • clf.fit(X_train, y_train) は、トレーニング データを使用してモデルをトレーニングします。モデルは、X_train 特徴からパターンを学習して、y_train ターゲット変数を予測します。

7. 予測を立てる

X = df[['Age', 'MonthlyCharge', 'CustomerServiceCalls']]  # Features
y = df['Churn']  # Target Variable
  • clf.predict(X_test): モデルがトレーニングされた後、テスト セット (X_test) で予測を行うために使用されます。これらの予測値は y_pred に保存され、実際の値 (y_test) と比較してモデルを評価します。

8. モデルの評価

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
  • accuracy_score(y_test, y_pred) は、予測されたチャーン ラベル (y_pred) とテスト セットの実際のチャーン ラベル (y_test) を比較することにより、モデルの精度を計算します。
  • 精度は、どれだけの予測が正しかったかを示す尺度です。評価用に印刷されます。

9. デシジョンツリーの視覚化

clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
  • tree.plot_tree(clf,filled=True): トレーニングされたデシジョン ツリー モデルを視覚化します。 filled=True 引数は、クラス ラベル (チャーン/チャーンなし) に基づいてノードを色付けします。
  • feature_names: ツリーに表示する機能 (独立変数) の名前を指定します。
  • class_names: ターゲット変数 (Churn) のクラス ラベルを指定します。
  • plt.show(): ツリーの視覚化を表示します。

コードの実行

  1. リポジトリのクローンを作成するか、スクリプトをダウンロードします。
  2. 依存関係をインストールします。
import pandas as pd
import matplotlib.pyplot as plt
import warnings
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn import tree
  1. Python スクリプトまたは Jupyter ノートブックを実行してモデルをトレーニングし、デシジョン ツリーを視覚化します。

以上が顧客離れを予測するためのデシジョン ツリー分類子の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。