【Python实战】电信客户流失预测:从数据清洗到决策树可视化全流程复盘
📝 摘要
在电信行业,获取新客户的成本往往远高于保留老客户。因此,构建精准的客户流失预警模型(Churn Prediction)是运营商降本增效的关键。本文基于真实的电信客户数据集,使用 Python 进行全流程数据分析。我们将经历数据清洗、多维度的探索性分析(EDA),并对比逻辑回归与决策树两种经典算法。特别是在模型可视化环节,本文将分享如何解决 plot_tree 中文重叠与乱码的“坑”,最终产出一份清晰、可落地的分析报告。
🚀 一、 项目背景与数据概览
本项目旨在通过分析用户的行为特征(如合约类型、月费、网络服务等),预测用户是否会流失(Churn = 1)。
- 数据来源:Telco Customer Churn 数据集
- 样本量:7043 条记录
- 目标变量:
Churn(Yes/No)
经过数据清洗(处理空值、类型转换、One-Hot编码)后,我们得到了用于建模的标准数据集。
🔍 二、 探索性数据分析 (EDA):谁在流失?
通过可视化分析,我们发现了几个显著的流失规律(见下图):

💡 关键发现:
- 合约类型是“定海神针”:
Month-to-month(按月付费)用户的流失率极高(>40%),而签订Two year(两年合约)的用户极其稳定。这说明长期合约是锁定用户的最有效手段。
- 网龄越长,忠诚度越高:
- 流失率随着在网时长(Tenure)的增加呈断崖式下跌。0-12个月的新用户是流失的高危人群。
- 支付方式暗藏玄机:
- 使用
Electronic check(电子支票)的用户流失率异常高(接近45%),这可能与该支付方式的便捷性导致“随时可退”有关。
- 使用
- 费用敏感度:
- 箱线图显示,流失用户的月费(MonthlyCharges)中位数明显高于留存用户。虽然总费用(TotalCharges)流失用户较低(因为用得短),但高昂的月租是推走他们的主要原因。
- 服务缺失:
- 没有开通
OnlineSecurity(网络安全)服务的用户,流失率显著高于开通用户。
- 没有开通
⚖️ 三、 模型特征重要性大比拼
为了找出影响流失的核心因子,我们分别使用了逻辑回归和决策树进行建模,并对比了它们的特征重要性。

📊 结果解读:
- 逻辑回归(左图):
- 在网时长 (Tenure) 和 月费 (MonthlyCharges) 的系数绝对值最大。这表明从线性关系看,这两个数值型变量对流失概率的影响权重最高。
- 决策树(右图):
- 按月付费 (Contract_Month-to-month) 占据了绝对的统治地位(Gini增益最高)。这说明决策树认为,“是否是按月付费”是区分流失与否的第一道、也是最强的门槛。
- 光纤 (Fiber Optic) 和 无技术支持 也是重要的分裂节点。
结论:两个模型殊途同归,都指向了短期合约和高费用是流失的主因。
🌳 四、 决策树可视化:破解中文乱码与重叠难题
决策树最大的优势在于其可解释性。我们可以清晰地看到模型是如何一步步做出判断的。
但在实际绘图时,常遇到两个痛点:
- 中文乱码:Graphviz 默认不支持中文字体。
- 节点重叠:
matplotlib的plot_tree在画布不够大或信息过多时,文字会挤成一团。
🛠️ 解决方案
我们采用 matplotlib 原生绘图,并通过以下策略优化:
- 强制设置字体:
plt.rcParams['font.sans-serif'] = ['SimHei']。 - 精简节点信息:隐藏
value数组和impurity(基尼系数),只保留判断条件和分类结果。 - 超大画布:设置
figsize=(48, 20),确保每个节点都有足够的呼吸空间。
、
🧠 决策路径解读(以根节点为例):
- Root Node: 首先判断 按月付费 <= 0.5(即是否不是按月付费)。
- False (右侧分支):如果是按月付费,模型倾向于判定为流失(蓝色节点多)。
- True (左侧分支):如果不是按月付费(即有合约),模型倾向于判定为留存(橙色节点多)。
- 二级节点:
- 对于非按月付费用户,如果 月费 <= 93.675,则更大概率留存。
- 对于按月付费用户,如果使用的是 光纤 (Fiber Optic),流失风险进一步加剧。
这张图不仅验证了前面的EDA结论,还给出了具体的业务阈值(例如月费 93.675 是一个关键分界线)。
🎯 五、 模型评估:谁更靠谱?
最后,我们通过混淆矩阵来评估模型的实战效果。

📉 数据分析:
- 逻辑回归 (Logistic Regression):
- 正确识别流失用户(True Positive):372 人。
- 漏报流失用户(False Negative):95 人。
- 决策树 (Decision Tree):
- 正确识别流失用户(True Positive):355 人。
- 漏报流失用户(False Negative):112 人。
🏆 结论:
虽然决策树的可解释性更强,但在本数据集上,逻辑回归的召回率(Recall)略高(372 vs 355)。这意味着逻辑回归能抓出更多的潜在流失客户,减少漏网之鱼。在实际业务中,如果我们希望尽可能多地挽留客户,逻辑回归可能是更好的选择;如果我们更需要向业务部门解释“为什么流失”,决策树则是最佳工具。
📌 六、 总结与建议
基于以上分析,对电信运营商提出以下建议:
- 转化合约:针对“按月付费”且“月费较高”的用户,推出“签约送话费”或“升级带宽”活动,引导其转为一年或两年合约。
- 新用户关怀:重点关注 0-12 个月的新用户,建立定期回访机制。
- 支付引导:鼓励用户使用自动扣款(信用卡/银行转账),减少电子支票的使用。
- 服务捆绑:向高风险用户免费赠送或优惠提供“网络安全”服务,增加用户粘性。
💬 互动话题:
你在处理决策树可视化时遇到过哪些坑?欢迎在评论区交流!如果觉得文章有帮助,请点赞收藏支持一下!👍
更多推荐
所有评论(0)