預測客戶流失的決策樹分類器範例
概述
此專案示範如何使用決策樹分類器來預測客戶流失(客戶是否離開服務)。此資料集包括年齡、每月費用和客戶服務電話等特徵,目的是預測客戶是否會流失。
模型使用 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:此函數透過將預測值與目標變數(Churn)的實際值進行比較來計算模型的準確性。
- 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 和目標變數流失(客戶是否流失)等特徵。
- CustomerID:每位客戶的唯一識別碼。
- 年齡:顧客的年齡。
- MonthlyCharge:客戶每月的帳單。
- CustomerServiceCalls:客戶致電客戶服務的次數。
- 流失:客戶是否流失(是/否)。
Pandas DataFrame:資料被建構為 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):因變量,即您嘗試預測的值。這裡是「流失」列,表示客戶是否會流失。
5. 將資料拆分為訓練集和測試集
warnings.filterwarnings("ignore")
-
train_test_split 將資料集分為兩部分:訓練集(用於訓練模型)和測試集(用於評估模型)。
- 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):可視化訓練後的決策樹模型。 fill=True 參數會根據類別標籤(流失/無流失)為節點著色。
- feature_names:指定要在樹中顯示的特徵(自變數)的名稱。
- class_names:指定目標變數(Churn)的類別標籤。
- plt.show():顯示樹視覺化。
運行程式碼
- 複製儲存庫或下載腳本。
- 安裝依賴項:
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 腳本或 Jupyter Notebook 來訓練模型並視覺化決策樹。
以上是預測客戶流失的決策樹分類器範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Tomergelistsinpython,YouCanusethe操作員,estextMethod,ListComprehension,Oritertools

在Python3中,可以通過多種方法連接兩個列表:1)使用 運算符,適用於小列表,但對大列表效率低;2)使用extend方法,適用於大列表,內存效率高,但會修改原列表;3)使用*運算符,適用於合併多個列表,不修改原列表;4)使用itertools.chain,適用於大數據集,內存效率高。

使用join()方法是Python中從列表連接字符串最有效的方法。 1)使用join()方法高效且易讀。 2)循環使用 運算符對大列表效率低。 3)列表推導式與join()結合適用於需要轉換的場景。 4)reduce()方法適用於其他類型歸約,但對字符串連接效率低。完整句子結束。

pythonexecutionistheprocessoftransformingpypythoncodeintoExecutablestructions.1)InternterPreterReadSthecode,ConvertingTingitIntObyTecode,whepythonvirtualmachine(pvm)theglobalinterpreterpreterpreterpreterlock(gil)the thepythonvirtualmachine(pvm)

Python的關鍵特性包括:1.語法簡潔易懂,適合初學者;2.動態類型系統,提高開發速度;3.豐富的標準庫,支持多種任務;4.強大的社區和生態系統,提供廣泛支持;5.解釋性,適合腳本和快速原型開發;6.多範式支持,適用於各種編程風格。

Python是解釋型語言,但也包含編譯過程。 1)Python代碼先編譯成字節碼。 2)字節碼由Python虛擬機解釋執行。 3)這種混合機制使Python既靈活又高效,但執行速度不如完全編譯型語言。

UseeAforloopWheniteratingOveraseQuenceOrforAspecificnumberoftimes; useAwhiLeLoopWhenconTinuingUntilAcIntiment.forloopsareIdealForkNownsences,而WhileLeleLeleLeleLeleLoopSituationSituationsItuationsItuationSuationSituationswithUndEtermentersitations。

pythonloopscanleadtoerrorslikeinfiniteloops,modifyingListsDuringteritation,逐個偏置,零indexingissues,andnestedloopineflinefficiencies


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

記事本++7.3.1
好用且免費的程式碼編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具