決策樹在電信客戶流失分析中的實戰應用

在當今數據驅動的時代,數據分析和機器學習技術在各行業的應用愈發廣泛。電信行業面臨著激烈的競爭,客戶流失問題成為影響企業發展的關鍵因素之一。如何準確預測客戶是否會流失,并采取相應措施挽留客戶,是電信企業關注的重點。決策樹作為一種經典且直觀的機器學習算法,在解決分類問題上表現出色,能夠幫助我們從大量數據中挖掘出有價值的信息,從而為決策提供有力支持。本文將結合 Python 代碼,詳細介紹決策樹在電信客戶流失分析中的實戰應用。

1. 決策樹算法概述

決策樹是一種基于樹結構的監督學習算法,它可以用于分類和回歸任務,本文主要聚焦于分類任務。其基本思想是通過對訓練數據進行特征選擇和劃分,構建一棵樹形結構,每個內部節點表示一個特征的判斷,每個分支表示一個判斷結果,而每個葉子節點則表示最終的分類結果。
決策樹構建過程中,關鍵在于如何選擇最優的特征進行劃分,以使得劃分后的子節點盡可能 “純凈”,即同一類別樣本盡可能聚集在同一節點。常用的特征選擇指標有信息增益、信息增益比和基尼指數。本文代碼中使用的是基尼指數(criterion=‘gini’),基尼指數用于度量數據集的不純度,其值越小,數據集的純度越高。

2. 數據準備與預處理

在進行數據分析和模型訓練之前,首先需要導入必要的庫,并加載數據。在本次電信客戶流失分析中,數據存儲在 Excel 文件 “電信客戶流失數據.xlsx” 中,我們使用pandas庫的read_excel函數將數據讀取到DataFrame對象中。

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix
import openpyxldatas = pd.read_excel("電信客戶流失數據.xlsx")

讀取數據后,需要將變量(特征)與結果(標簽)進行劃分。通過iloc方法,將除最后一列之外的所有列作為特征數據,最后一列作為標簽數據。

data = datas.iloc[:,:-1]
target = datas.iloc[:,-1]

為了評估模型的性能,我們需要將數據集劃分為訓練集和測試集。使用sklearn.model_selection模塊中的train_test_split函數,將數據集按照 8:2 的比例劃分為訓練集和測試集,并設置隨機種子random_state = 42,以確保劃分的可重復性。

from sklearn.model_selection import train_test_splitdata_train, data_test, target_train, target_test = \train_test_split(data, target, test_size = 0.2,random_state = 42)

3. 決策樹模型構建與訓練

在完成數據準備后,我們開始構建決策樹模型。通過sklearn.tree模塊中的DecisionTreeClassifier類創建決策樹分類器對象,并設置相關參數。這里我們選擇基尼指數作為特征選擇標準(criterion=‘gini’),限制決策樹的最大深度為 8(max_depth = 8),同時設置隨機種子為 42,以保證每次運行結果的一致性。

from sklearn import tree
dtr = tree.DecisionTreeClassifier(criterion='gini', max_depth = 8, random_state = 42)
dtr.fit(data_train, target_train)

使用訓練集數據對決策樹模型進行訓練,通過fit方法讓模型學習特征與標簽之間的關系。

4. 模型評估

4.1 訓練集評估

模型訓練完成后,首先使用訓練集數據進行預測,并通過多種指標評估模型在訓練集上的性能。

訓練集預測值

train_predicted = dtr.predict(data_train)
from sklearn import metrics

繪制混淆矩陣

print(metrics.classification_report(target_train, train_predicted))

可視化混淆矩陣

cm_plot(target_train,train_predicted).show()

使用predict方法得到訓練集的預測結果,通過sklearn.metrics模塊中的classification_report函數生成分類報告,該報告包含精確率、召回率、F1 值等關鍵評估指標,能夠全面評估模型在各個類別上的分類效果。同時,通過自定義的cm_plot函數繪制混淆矩陣,可視化展示模型預測結果與真實標簽之間的匹配情況。

4.2 測試集評估

為了更真實地評估模型的泛化能力,使用測試集數據進行預測和評估。

測試集預測值

test_predicted = dtr.predict(data_test)

繪制混淆矩陣

print(metrics.classification_report(target_test, test_predicted))

可視化混淆矩陣

cm_plot(target_test,test_predicted).show()

對決策樹測試集進行評分

dtr.score(data_test, target_test)

同樣使用predict方法得到測試集的預測結果,生成分類報告并繪制混淆矩陣。此外,通過score方法計算模型在測試集上的準確率,進一步量化模型的性能表現。

5. 決策樹可視化

決策樹的優勢之一在于其可解釋性,通過可視化決策樹,我們可以直觀地了解模型的決策邏輯和特征重要性。使用sklearn.tree模塊中的plot_tree函數,結合matplotlib庫,對訓練好的決策樹模型進行可視化展示。

import matplotlib.pyplot as plt
from sklearn.tree import plot_tree#決策樹的繪圖
fig, ax= plt.subplots(figsize=(32,32))
plot_tree(dtr,filled = True, ax=ax)
plt.show()

通過設置合適的圖形大小,并啟用filled = True參數,使決策樹可視化結果更加美觀和清晰。從可視化的決策樹中,我們可以清晰地看到每個節點的特征判斷條件、樣本數量以及分類結果,有助于深入理解模型的決策過程。

運行結果

在這里插入圖片描述

6. 總結與展望

本文通過 Python 代碼實現了決策樹在電信客戶流失分析中的完整應用流程,從數據準備、模型構建與訓練,到模型評估和可視化,全面展示了決策樹算法的實際應用價值。通過分析模型的評估指標和可視化結果,我們可以了解模型的性能表現,并發現數據中隱藏的規律和特征重要性。
然而,決策樹算法也存在一些局限性,例如容易過擬合。在實際應用中,可以通過剪枝、集成學習(如隨機森林、梯度提升樹等)等方法來改進模型性能。未來,我們可以進一步探索更復雜的機器學習算法和技術,結合更多的業務場景和數據,不斷優化模型,為電信企業提供更準確、有效的客戶流失預測和決策支持,助力企業在激烈的市場競爭中取得優勢。
上述博客涵蓋了決策樹從原理到實踐的核心內容。你對博客的內容深度、篇幅長短是否滿意?若有修改方向或補充需求,可隨時告知。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/78860.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78860.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/78860.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【HCIA】VRRP

前言 二層交換機為了破環發明了堆疊,把幾臺實際的交換機視作一個虛擬的交換機,實現了鏈路的復用和環路的破壞。那么對應到三層的路由器,我們有 VRRP(Virtual Router Redundancy Protocol),它可以讓路由器分…

第15講:基礎柱狀圖與分組柱狀圖美化指南

目錄 ?? 一、為什么要關注柱狀圖的“美化”? ?? 二、基礎柱狀圖的構建邏輯(以 ggplot2 為例) ?? 三、美化細節全面升級 ? 1. 自定義配色與透明度 ? 2. 添加數值標簽 ? 3. 設置 y 軸刻度與坐標軸美學 ????? 四、分組柱狀圖(Grouped Bar Plot) ?? 五…

SV 仿真的常識

文章目錄 SV對verilog的擴展📘 標準文檔名稱: 從SV到仿真通用過程解讀實例解讀 SV的仿真過程并行仿真顆粒度SV仿真調度調度區域 SV對verilog的擴展 SystemVerilog 和 Verilog 的語法標準由 **IEEE(美國電氣和電子工程師協會)**制…

蘇德戰爭前期蘇聯損失慘重(馬井堂)

蘇德戰爭前期(1941年6月22日德國發動“巴巴羅薩行動”至1941年底至1942年初)是蘇聯在二戰中損失最慘重的階段之一。以下是主要方面的損失概述: ?一、軍事損失? ?人員傷亡與俘虜? 至1941年底,蘇軍傷亡約?300萬人?&#xff…

聯邦學習的收斂性分析(全設備參與,不同本地訓練輪次)

聯邦學習的收斂性分析 在聯邦學習中,我們的目標是分析全局模型的收斂性,考慮設備異構性(不同用戶的本地訓練輪次不同)和數據異質性(用戶數據分布不均勻)。以下推導從全局模型更新開始,逐步引入假設并推導期望損失的遞減關系,最終給出收斂性結論。 1. 全局模型更新與泰…

多線程爬蟲中實現線程安全的MySQL連接池

多線程爬蟲中實現線程安全的MySQL連接池 在日常開發中,數據庫操作頻繁建立/關閉連接會帶來性能損耗,尤其在多線程場景中更容易出現連接復用、阻塞等問題。因此,本文介紹如何使用 Python 封裝一個 線程安全的 MySQL 連接池,并通過…

HTML:常用標簽(元素)匯總

文章目錄 一、標簽分類1、塊標簽與行標簽 二、排版標簽三、文本標簽1、常用2、不常用 四、圖片標簽五、超鏈接1、跳轉頁面2、跳轉文件或下載文件3、跳轉到錨點4、喚起本地應用 六、列表七、表格八、表單九、框架十、HTML實體十一、全局屬性十二、meta元信息 一、標簽分類 1、塊…

20250430在ubuntu14.04.6系統上完成編譯NanoPi NEO開發板的FriendlyCore系統【嚴重不推薦,屬于沒苦硬吃】

【開始編譯SDK之前需要更新源】 rootrootubuntu:~/friendlywrt-h3$ sudo apt update 【這兩個目錄你在ubuntu14.04.6系統上貌似git clone異常了】 Y:\friendlywrt-h3\out\wireguard Y:\friendlywrt-h3\kernel\exfat-nofuse 【需要單線程編譯文件系統,原因不明】 Y:…

【AI論文】CipherBank:通過密碼學挑戰探索LLM推理能力的邊界

摘要:大型語言模型(LLMs)已經展現出非凡的能力,尤其是最近在推理方面的進步,如o1和o3,推動了人工智能的發展。盡管在數學和編碼方面取得了令人印象深刻的成就,但在需要密碼學專業知識的領域&…

藝術與科技的雙向奔赴——高一鑫榮獲加州聯合表彰

2025年4月20日,在由M.A.D公司協辦的“智藝相融,共赴價值巔峰”(Academic and Artistic Fusion Tribute to the Summit of Value)主題發布會上,音樂教育與科技融合領域的代表人物高一鑫,因其在數字音樂教育與中美文化交流方面的杰出貢獻,榮獲了圣蓋博市議員Jorge Herrera和爾灣市…

【深度學習的靈魂】圖片布局生成模型LayoutPrompt(1)

🌈 個人主頁:十二月的貓-CSDN博客 🔥 系列專欄: 🏀《深度學習理論直覺三十講》_十二月的貓的博客-CSDN博客 💪🏻 十二月的寒冬阻擋不了春天的腳步,十二點的黑夜遮蔽不住黎明的曙光 目…

Compose筆記(二十)--TextField

這一節主要了解一下Compose的TextField,TextField 是一個用于接收用戶文本輸入的 UI 組件,允許用戶通過鍵盤輸入、編輯或刪除文本。簡單用法總結如下: API value:當前輸入的文本內容。 onValueChange 含義:當用戶輸入文本時觸發的回調函數,參…

在Linux虛擬機下使用vscode,#include無法跳轉問題

總結:需要通過Linux指令來添加編譯器和壓縮文件,解壓,這樣獲得的編譯器會具有可執行權限類似于 -rwxr-xr-x 1 user user 12345 Apr 26 14:22 myscript.sh 如果你直接從window中拖入文件到Linux文件下,你需要自己來再度開啟可編譯…

ArcGIS+GPT:多領域地理分析與決策新方案

技術點目錄 AI大模型應用ArcGIS工作流程及功能prompt的使用技巧AI助力工作流程AI助力數據讀取AI助力數據編輯與處理AI助力空間分析AI助力遙感分析AI助力二次開發AI助力科研繪圖ArcGISAI綜合應用了解更多 ——————————————————————————————————…

基礎術語說明

車間:工廠內集中進行加工或裝配的獨立空間,配備設備、工具及人員,是生產活動的核心載體。 比如裝配車間、總裝車間、油漆車間等 生產線:以流水作業形式將原材料轉化為成品的設備與人員的組合系統,強調連續性和效率。…

Splunk 使用Role 實現數據隔離

很多人知道 Splunk 有很多自帶的Role, 今天我就要說說定制化的Role: 1: 在創建新role 的界面: 2: 在如下的界面,可以定制allow index name: 3: 創建好新Role 后,在SAML 添加新的group 的時候,就可以看到Role 給某個group: 4: 這樣一個特定組的人來申請Splunk 權限,就可…

利用李雅普諾夫穩定性理論設計模型參考自適應系統(2.0)

上一篇介紹了利用李雅普諾夫穩定性理論設計模型參考自適應系統,通過在被控對象前面添加一個可調增益,然后利用李雅普諾夫穩定性理論設計增益的自適應率,使得被控對象輸出與參考模型輸出一致。本文將介紹在系統結構中引入前饋和反饋的結構&…

前端封裝WebSocket工具n

Web API 提供的 WebSocket 類,封裝一個 Socket 類 // socket.js import modal from /plugins/modal const baseURL import.meta.env.VITE_APP_BASE_WS; const EventTypes [open, close, message, error, reconnect]; const DEFAULT_CHECK_TIME 55 * 1000; // 心…

TCP和UDP傳輸層協議

TCP(Transmission Control Protocol)和 UDP(User Datagram Protocol)是兩種常見的傳輸層協議,它們在網絡通信中發揮著不同的作用。二者在連接建立、可靠性、傳輸效率等方面存在顯著差異,適用于不同的應用場…

空域倫理與AI自主邊界的系統建構

在AI無人系統逐步參與城市空域治理的過程中,系統的“自主性”已不再僅是技術指標,而是直接影響合規性、安全性與社會接受度的倫理邊界議題。AI決策系統是否擁有“強干預能力”?行為觸發責任應歸屬何方?算法可否調優至“自我糾偏”…