目录
一、项目背景
1.1 流失用户定义
不同产品都存在不同的使用周期,因此在定义流失用户上,需要进行用户调研,如可对时隔1周、1个月、3个月、半年未下单客户进行用户调研,从而了解用户不再产生浏览和购买行为的原因,进而定义流失。
1.2 探究用户流失目的
研究用户流失的首要目的是避免用户继续流失,其次才是挽回流失。在研究过程中,可通过观察用户的生命周期来判断其流失原因:
(1)获取期:新用户通过推广、宣传来到产品中,属尝鲜型;
(2)提升期:用户有购买行为;
(3)成熟期:用户存在复购和交叉购买行为;
(4)衰退期:用户购买行为和频次开始衰退,这是最需要预警的时期;
(5)离开期:达到流失标准;
根据以上五个生命周期为用户打上标签,从而判断用户是在哪个时期流失,相应的流失原因不同,则应采取不同措施对产品进行改进。
1.3 项目描述
1.3.1 项目简介
随着电信行业的竞争日益激烈,获取一个新用户所需的成本已远高于保留现有客户的成本,因此,如何挽留更多的用户已成为电信行业的一项关键业务指标。对于电信行业而言,可通过数据挖掘等方式来分析可能影响客户决策的各种因素,从而预测他们是否会产生流失。
本案例利用Kaggle上公开的某电信公司的用户数据,借此数据集进行分析并建立用户流失预测模型。
1.3.2 分析工具
(1)开发环境:python3、Spyder
(2)相关库的导入
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.preprocessing import LabelEncoder
from imblearn.over_sampling import SMOTE
from sklearn.model_selection import cross_val_score,train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import classification_report,precision_score,recall_score,f1_score
from sklearn.model_selection import GridSearchCV
from sklearn import tree
二、数据预处理
2.1 数据采集与预览
#读取数据文件
tel = pd.read_csv(r"C:\Users\HP\Desktop\电信用户流失数据.csv")
#数据预览
tel.info()
运行结果:
RangeIndex: 7043 entries, 0 to 7042
Data columns (total 21 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 customerID 7043 non-null object
1 gender 7043 non-null object
2 SeniorCitizen 7043 non-null int64
3 Partner 7043 non-null object
4 Dependents 7043 non-null object
5 tenure 7043 non-null int64
6 PhoneService 7043 non-null object
7 MultipleLines 7043 non-null object
8 InternetService 7043 non-null object
9 OnlineSecurity 7043 non-null object
10 OnlineBackup 7043 non-null object
11 DeviceProtection 7043 non-null object
12 TechSupport 7043 non-null object
13 StreamingTV 7043 non-null object
14 StreamingMovies 7043 non-null object
15 Contract 7043 non-null object
16 PaperlessBilling 7043 non-null object
17 PaymentMethod 7043 non-null object
18 MonthlyCharges 7043 non-null float64
19 TotalCharges 7043 non-null object
20 Churn 7043 non-null object
dtypes: float64(1), int64(2), object(18)
从运行结果可知,数据集一共提供了7043条用户样本信息,且无缺失值,其中每条样本包含21列属性,由多个维度的客户特征信息以及用户是否流失的标签组成。 各用户特征信息及相关含义如下:
变量名 |
描述 |
数据类型 |
取值 |
customerID |
用户ID |
string |
7043个不重复值 |
gender |
性别 |
string |
Male,Female |
SeniorCitizen |
是否为老年人 |
int |
0,1 |
Partner |
是否有配偶 |
string |
Yes,NO |
Dependents |
是否有家属 |
string |
Yes,No |
tenure |
入网月数 |
int |
0~72 |
PhoneService |
是否开通电话业务 |
string |
Yes,NO |
MultipleLines |
是否开通多线业务 |
string |
Yes,No,No phone service |
InternetService |
是否开通互联网业务 |
string |
DSL, Fiber optic, No |
OnlineSecurity |
是否开通在线安全业务 |
string |
Yes,No,No internet service |
OnlineBackup |
是否开通在线备份业务 |
string |
Yes,No,No internet service |
DeviceProtection |
是否开通设备保护业务 |
string |
Yes,No,No internet service |
TechSupport |
是否开通技术支持业务 |
string |
Yes,No,No internet service |
StreamingTV |
是否开通网络电视业务 |
string |
Yes,No,No internet ser |