顧客の解約を予測するための決定ツリー分類器の例
概要
このプロジェクトは、意思決定ツリー分類器を使用して顧客チャーン(顧客がサービスを辞めるかどうか)を予測する方法を示しています。データセットには、 age 、 monthle Charges 、のカスタマーサービスコールなどの機能が含まれます。
モデルは、Scikit-Learnの決定ツリー分類器を使用してトレーニングされ、コードは決定ツリーを視覚化して、モデルが決定をどのようにしているかをよりよく理解します。
使用されたテクノロジー
python 3.x - :モデルの構築に使用される一次言語。
pandas - :データの操作と処理データセットの場合。
matplotlib - :データ視覚化の場合(決定ツリーをプロット)。。
scikit-learn - :モデルトレーニングと評価を含む機械学習用。
説明された手順
1。
必要なライブラリをインポート
pdasとしてpandasをインポートします
pltとしてmatplotlib.pyplotをインポートします
警告をインポートします
sklearn.model_selectionからimport train_test_splitから
Sklearn.TreeからImport DecisionTreeClassifierから
sklearn.metrics Import quarty_scoreから
Sklearnインポートツリーから
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
- pandas
(pd):
これは、データの操作とデータフレーム形式へのロードに使用されます。データフレームを使用すると、テーブル(行や列)などの構造化データを整理および操作できます。
- matplotlib
(plt):
これは、データを視覚化するために使用されるプロットライブラリです。ここでは、決定ツリーをグラフィカルにプロットするために使用されます。これは、ツリーの各ノードで決定がどのように行われるかを理解するのに役立ちます。
- 警告
(警告):
警告モジュールは、警告を抑制または処理するために使用されます。このコードでは、出力を清潔で読み取り可能に保つために不必要な警告を無視しています。
- scikit-learn
ライブラリ:
train_test_split - :この関数は、データセットをトレーニングとテストサブセットに分割します。トレーニングデータはモデルの適合に使用され、テストデータを使用してパフォーマンスを評価します。
DecisionTreeClassifier - :これは、データの分類と顧客の解約を予測するために使用されるモデルです。意思決定ツリーは、機能に基づいた決定のツリーのようなモデルを作成することにより機能します。
quarchaty_score - :この関数は、予測値をターゲット変数(チャーン)の実際の値と比較することにより、モデルの精度を計算します。。
tree - :このモジュールには、訓練されたら決定ツリーを視覚化するための関数が含まれています。
2。
警告の抑制
警告filterwarnings( "Ingrore")
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。
合成データセットの作成
data = {
「CustomerID」:範囲(1、101)、#各顧客の一意のID
「年齢」:[20、25、30、35、40、45、50、55、60、65]*10、#顧客の年齢
'Monthly Charge':[50、60、70、80、90、100、110、120、130、140]*10、#毎月の請求額
「customerservicecalls」:[1、2、3、4、4、0、1、2、3、4、0]*10、#カスタマーサービスコールの数
「チャーン」:['いいえ'、「いいえ」、「はい」、「いいえ」、「はい」、「いいえ」、「はい」、「はい」、「いいえ」、「はい」]*10#チャーンステータス
}
df = pd.dataframe(data)
print(df.head())
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
ここでは、プロジェクトの
合成データセット- を作成します。このデータセットは、年齢、毎月の充電、customerservicecalls、ターゲット変数チャーンなどの機能を備えた通信会社の顧客情報をシミュレートします(顧客がチャーンしたかどうか)。
。
customerId :各顧客の一意の識別子。-
age
:顧客の年齢。-
MonthlyCharge
:顧客の毎月の請求書。-
customerservicecalls
:顧客がカスタマーサービスと呼ばれる回数。-
churn
:顧客がチャーンしたかどうか(yes/no)。-
pandas dataframe - :データはデータフレーム(df)として構成されており、2次元のラベル付きデータ構造であり、データの簡単な操作と分析を可能にします。
4。データを機能とターゲット変数に分割します
x = df [['age'、 'monthly charge'、 'customerservicecalls']]#feature
y = df ['churn']#ターゲット変数
機能(x)
X = df[['Age', 'MonthlyCharge', 'CustomerServiceCalls']] # Features
y = df['Churn'] # Target Variable
- ターゲット変数(y):従属変数。これは予測しようとしている値です。ここでは、顧客が解約するかどうかを示すチャーンコラムです。
-
5。データをトレーニングとテストセットに分割します
x_train、x_test、y_train、y_test = train_test_split(x、y、test_size = 0.3、random_state = 42)
train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
- test_size = 0.3 :データの30%がテスト用に確保されており、残りの70%はトレーニングに使用されます。。
random_state = 42 は、乱数ジェネレーターのシードを修正することにより、結果の再現性を保証します。
-
6。
決定ツリーモデルのトレーニング-
clf = decisiontreeclassifier()
clf.fit(x_train、y_train)
decisiontreeclassifier()
decision treeモデルを初期化します。
clf.fit(x_train、y_train)
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
-
7。予測を作成
- y_pred = clf.predict(x_test)
clf.predict(x_test)
:モデルがトレーニングされた後、テストセット(x_test)で予測を行うために使用されます。これらの予測値はy_predに保存され、モデルを評価するために実際の値(y_test)と比較します。。
8。
y_pred = clf.predict(X_test)
- quarchy = quarchacy_score(y_test、y_pred)
印刷(f "精度:{精度}")
quarchaty_score(y_test、y_pred)
は、予測チャーンラベル(y_pred)とテストセットの実際のチャーンラベル(y_test)と比較することにより、モデルの精度を計算します。
精度
は、いくつの予測が正しいかの尺度です。評価のために印刷されています。
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
9。- 決定ツリーを視覚化
plt.figure(figsize =(12、8))
tree.plot_tree(clf、fell = true、feature_names = ['age'、 'monthly charge'、 'customerservicecalls']、class_names = ['no churn'、 'churn']))
plt.show()
-
tree.plot_tree(clf、fell = true)
:訓練された決定ツリーモデルを視覚化します。 fell = true引数は、クラスラベル(チャーン/チャーンなし)に基づいてノードを色付けします。
feature_names
:ツリーに表示する機能(独立変数)の名前を指定します。
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
class_names - :ターゲット変数(チャーン)のクラスラベルを指定します。。
plt.show()- :ツリーの視覚化を表示します。
-
コードを実行します
リポジトリをクローンするか、スクリプトをダウンロードします。-
インストール依存関係:
PIPインストールPANDAS MATPLOTLIB SCIKIT-LEARN
PythonスクリプトまたはJupyterノートブックを実行して、モデルをトレーニングし、決定ツリーを視覚化します。
-