逻辑回归案例:电信用户流失预测 - 数据可视化
1 课程概览
本课讲解电信用户流失预测案例的数据可视化。通过countplot(计数柱状图)查看月租会员的流失情况,进行特征筛选。查看列名方便抽取特征。
2 核心概念与定义
- 数据可视化:通过图表展示数据分布和关系。
- countplot:计数柱状图,统计各类别数量。
- 特征筛选:选择影响最终结果的特征。
- seaborn:Python数据可视化库。
3 算法与模型详解
3.1 可视化目标
目的:
- 查看月租会员的流失情况
- 进行特征筛选
- 选择影响最终结果的特征
3.2 可视化步骤
流程:
- 读取CSV文件
- 对object类型列做one-hot编码
- 删除冗余列
- 修改列名
- 查看列名(方便抽取特征)
- 数据可视化(绘制计数柱状图)
3.3 查看列名
作用:方便从所有列中抽取特征
代码:
print(churn_df.columns)
3.4 计数柱状图
作用:统计各类别数量
示例:查看月租会员的流失情况
4 数学原理与推导
本课主要是数据可视化操作,无复杂数学推导。
5 代码示例
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
def dm02_数据可视化():
"""数据可视化"""
# 1. 读取CSV文件
churn_df = pd.read_csv('data/churn.csv')
# 2. 对object类型列做one-hot编码
churn_df = pd.get_dummies(churn_df, columns=['Churn', 'gender'])
# 3. 删除冗余列
churn_df = churn_df.drop(columns=['Churn_No', 'gender_male'])
# 4. 修改列名
churn_df = churn_df.rename(columns={'Churn_Yes': 'flag'})
# 5. 查看列名(方便抽取特征)
print("=== 所有列名 ===")
print(churn_df.columns.tolist())
# 6. 数据可视化
plt.figure(figsize=(10, 6))
# 绘制计数柱状图:月租会员的流失情况
sns.countplot(x='Contract_Month', hue='flag', data=churn_df)
plt.title('月租会员流失情况')
plt.xlabel('是否月租会员')
plt.ylabel('数量')
plt.legend(['未流失', '流失'])
plt.show()
# 7. 查看其他特征与流失的关系
fig, axes = plt.subplots(2, 2, figsize=(15, 10))
# 互联网服务与流失
sns.countplot(x='InternetService', hue='flag', data=churn_df, ax=axes[0, 0])
axes[0, 0].set_title('互联网服务与流失')
# 支付方式与流失
sns.countplot(x='PaymentMethod_Electronic', hue='flag', data=churn_df, ax=axes[0, 1])
axes[0, 1].set_title('支付方式与流失')
# 月租会员与流失
sns.countplot(x='Contract_Month', hue='flag', data=churn_df, ax=axes[1, 0])
axes[1, 0].set_title('月租会员与流失')
# 性别与流失
sns.countplot(x='gender_Female', hue='flag', data=churn_df, ax=axes[1, 1])
axes[1, 1].set_title('性别与流失')
plt.tight_layout()
plt.show()
# 运行
if __name__ == '__main__':
dm02_数据可视化()
输出示例:
=== 所有列名 ===
['customerID', 'SeniorCitizen', 'Partner', 'Dependents', 'PhoneService',
'InternetService', 'Contract_Month', 'PaymentMethod_Electronic',
'MonthlyCharges', 'TotalCharges', 'flag', 'gender_Female']
6 重难点与易错提醒
- ❗重点:使用seaborn的countplot绘制计数柱状图。
- ❗重点:查看列名方便抽取特征。
- ❗重点:hue参数指定分类依据。
- ⚠️易错:列名大小写问题。
- ⚠️易错:可视化前需要完成数据预处理。
- 💡深入理解:可视化有助于特征选择。
7 课堂问答精选
Q: 如何查看月租会员的流失情况?
A: 使用seaborn的countplot绘制计数柱状图:
sns.countplot(x='Contract_Month', hue='flag', data=churn_df)
其中x指定横轴特征,hue指定分类依据(是否流失),data指定数据源。
Q: 为什么要查看列名?
A: 查看列名是为了方便从所有列中抽取特征。数据预处理后列名会变化(如one-hot编码后新增列),需要确认正确的列名才能正确抽取特征。
8 本课小结
- 可视化目标:查看月租会员流失情况。
- 步骤:读取 → 编码 → 删除 → 改名 → 查看列名 → 可视化。
- countplot:计数柱状图,统计各类别数量。
- seaborn:数据可视化库。
9 延伸思考与实践
- 实践:绘制不同特征与流失的关系图。
- 预习:模型训练预测评估。
- 思考:如何根据可视化结果选择特征?