May 2025
Intermediate to advanced
328 pages
4h 32m
Chinese
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
在本章中,您将学习如何使用 Python 中两种流行的 ML 库(scikit-learn 和 Keras)构建分类模型来预测客户流失率。首先,您将使用 Pandas 探索和清理数据。然后,您将学习如何使用 scikit-learn 使用单次编码准备用于训练的分类特征、训练逻辑回归模型、使用评估指标了解模型性能并改进模型性能。您还将学习如何使用 Keras 执行相同的步骤,使用已准备好的数据构建神经网络分类模型。在此过程中,您将了解更多分类模型的性能指标,以及如何更好地理解混淆矩阵,从而更好地评估分类模型。
本章使用的数据集是IBM Telco Customer Churn 数据集,它是学习如何为客户流失建模的常用数据集。在完成本章的练习后,您可以参考其他如何使用该数据集的示例,以增长知识。
在本项目中,您的目标是预测一家电信公司的客户流失率。客户流失率 被定义为客户的流失率 ,或者换句话说,客户选择停止使用服务的比率。电信公司通常按月或按年合同销售产品,因此这里的客户流失率是指客户在下个月取消订购或合同的情况。
数据最初是以 CSV 文件提供的,因此您需要花一些时间将数据加载到 Pandas 中,然后才能探索数据,并最终使用不同的框架创建 ML 模型。数据集包含数字变量和分类变量,其中变量从一组离散的可能性中取值。
数据集中有 21 列。表 7-1列出了这些列的列名、数据类型和一些可能的值。
| 列名 | 立柱类型 | 关于字段值的说明 |
|---|---|---|
customerID |
字符串 | 为每位客户提供独特价值 |
gender |
字符串 | "男性 "或 "女性" |
SeniorCitizen |
整数 | 如果客户是老年人,则为 1,否则为 0 |
Partner |
字符串 | 记录客户是否有家庭伴侣(配偶或同居伴侣 |
Dependents |
字符串 | 记录客户家中是否有受抚养人 |
tenure |
整数 | 客户使用电信服务的月数 |
PhoneService |
字符串 | 记录客户是否支付了电话服务费 |
MultipleLines |
字符串 | 如果客户支付了电话服务费,他们是否支付了多条电话线的费用? |
InternetService |
字符串 | 客户支付的互联网服务类型(如果有)是什么? |
OnlineSecurity |
字符串 | 客户是否为在线安全付费? |
OnlineBackup |
字符串 | 客户是否为在线备份付费? |
DeviceProtection |
字符串 | 客户是否为设备保护付费? |
TechSupport |
字符串 | 客户是否需要为在线技术支持付费? |
StreamingTV |
字符串 | 用户是否为流媒体电视付费? |
StreamingMovies |
字符串 | 客户会为流媒体电影付费吗? |
Contract |
字符串 | 客户是签订合同还是按月付款? |
PaperlessBilling |
字符串 | 客户是否使用无纸化账单? |
PaymentMethod |
字符串 | 客户使用什么付款方式? |
MonthlyCharges |
浮动 | 客户服务月费 |
TotalCharges |
浮动 | 客户在一生中支付的总金额 |
Churn |
字符串 | 客户是否在下个月离开了电信公司的服务? |
您会发现,在训练 ML 模型时,许多特征都可以合并或省略。不过,许多特征需要清理和进一步转换,以便为训练过程做好准备。 ...