預測客戶流失的決策樹分類器範例
預測客戶流失的決策樹分類器範例
概述
此專案示範如何使用決策樹分類器來預測客戶流失(客戶是否離開服務)。此資料集包括年齡、每月費用和客戶服務電話等特徵,目的是預測客戶是否會流失。
模型使用 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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

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

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

要在有限的時間內最大化學習Python的效率,可以使用Python的datetime、time和schedule模塊。 1.datetime模塊用於記錄和規劃學習時間。 2.time模塊幫助設置學習和休息時間。 3.schedule模塊自動化安排每週學習任務。

Python在開發效率上優於C ,但C 在執行性能上更高。 1.Python的簡潔語法和豐富庫提高開發效率。 2.C 的編譯型特性和硬件控制提升執行性能。選擇時需根據項目需求權衡開發速度與執行效率。

每天學習Python兩個小時是否足夠?這取決於你的目標和學習方法。 1)制定清晰的學習計劃,2)選擇合適的學習資源和方法,3)動手實踐和復習鞏固,可以在這段時間內逐步掌握Python的基本知識和高級功能。

pythonlistsarepartofthestAndArdLibrary,herilearRaysarenot.listsarebuilt-In,多功能,和Rused ForStoringCollections,而EasaraySaraySaraySaraysaraySaraySaraysaraySaraysarrayModuleandleandleandlesscommonlyusedDduetolimitedFunctionalityFunctionalityFunctionality。

Python在自動化、腳本編寫和任務管理中表現出色。 1)自動化:通過標準庫如os、shutil實現文件備份。 2)腳本編寫:使用psutil庫監控系統資源。 3)任務管理:利用schedule庫調度任務。 Python的易用性和豐富庫支持使其在這些領域中成為首選工具。

Python和C 各有優勢,選擇應基於項目需求。 1)Python適合快速開發和數據處理,因其簡潔語法和動態類型。 2)C 適用於高性能和系統編程,因其靜態類型和手動內存管理。

Python在Web開發中的關鍵應用包括使用Django和Flask框架、API開發、數據分析與可視化、機器學習與AI、以及性能優化。 1.Django和Flask框架:Django適合快速開發複雜應用,Flask適用於小型或高度自定義項目。 2.API開發:使用Flask或DjangoRESTFramework構建RESTfulAPI。 3.數據分析與可視化:利用Python處理數據並通過Web界面展示。 4.機器學習與AI:Python用於構建智能Web應用。 5.性能優化:通過異步編程、緩存和代碼優
