一、项目背景与目的
数据来源于Kaggle某项目:Bank Customer Churn | Kaggle
本数据集包括10000条匿名跨国银行的客户数据。数据分析的目的是预测客户流失的概率,然后通过预测模型的建立,相应地去提高用户的活跃度,实现挽留客户,降低挽留关怀工作的成本。
二、明确问题
项目关键问题是用户流失,在数据集中有一个Exited字段是我们需要预测的目标变量,Exited=1代表客户流失,Exited=0代表客户未流失,明显这是个监督学习的分类预测问题。构建模型要达到的目的是在精确度尽可能高的情况下,召回率也要尽可能高。
三、数据理解
在下面图中可以清晰看到各特征值和其含义
其中CreditScore、Geography、Gender、Age、Tenure、Balance等指标对客户流失有一定影响。
四、EDA-数据探索性分析
数据总览
import pandas as pd
import numpy as np
import warnings
warnings.filterwarnings("ignore")
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']= ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']= False #用来正常显示负号
import seaborn as sn
%matplotlib inline
pd.options.display.max_rows = None
pd.options.display.max_columns = None
df=pd.read_csv('C:/Users/koo/Desktop/archive/Customer_Churn.csv')
df.info()
我们可以看到有10000条样本数据,18个特征并无缺失值,4个类别变量,数据还比较干净。其中也存在无关特征,我们需要删除,以保证后面更好的训练模型。
剔除无关特征
#统计目标变量Exited列
df['Exited'].value_counts()
# 去掉RowNumber、CustomerId和Surname列
df = df.drop(["RowNumber", "CustomerId", "Surname"], axis = 1)
# 再一次检查数据
df.head()
上面的数据中,有些问题显露:
1. 数据并没有日期,没有对Banlance(余额)字段说明清楚;以及有些客户流失,余额也存在。
2. 其中IsActiveMember指的是客户是否活跃,我们只知道他/她是否活跃,这个变量的意义不明确,有没有信用卡对用户流失与否影响也不大。
数据有18个变量,其中RowNumber、CustomerId和Surname是无意义的变量,我们把这些变量 移除以便更好的分析数据。其中目标变量统计如下:
0 7962 1 2038 Name: Exited, dtype: int64
目标变量分析
目标变量占比:
labels = '流失', '维持'# 定义标签
sizes = [df.Exited[df['Exited']==1].count(), df.Exited[df['Exited']==0].count()]# 每一块的比例
colors = ['red', 'gold']
explode = (0.1, 0)# 突出显示
f, ax1 = plt.subplots(figsize=(7, 4))
ax1.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%',
shadow=True, startangle=90)
ax1.axis('equal')# 显示为圆(避免比例压缩为椭圆)
plt.title("客户流失占比", size = 15)
plt.show()
扇形图中,流失的客户占比是20.4%,未流失的客户占比是79.6%。
目标变量与其他变量的关系:
f, axar = plt.subplots(2, 2, figsize=(20, 12))
sn.countplot(x=df['Geography'], hue =df['Exited'], ax=axar[0][0])
sn.countplot(x=df['Gender'], hue =df['Exited'],palette="Set1", ax=axar[0][1])
sn.countplot(x=df['HasCrCard'], hue =df['Exited'],palette="Set2", ax=axar[1][0])
sn.countplot(x=df['IsActiveMember'], hue