前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python实战|利用生存分析预测用户流失周期(一)

Python实战|利用生存分析预测用户流失周期(一)

作者头像
数据万花筒
发布于 2021-07-29 08:31:58
发布于 2021-07-29 08:31:58
1.2K00
代码可运行
举报
文章被收录于专栏:数据万花筒数据万花筒
运行总次数:0
代码可运行
利用生存分析预测用户流失周期

上篇

1.数据基本情况探索

2.数据来源及预处理

3.数据相关性探索

下篇

1.Cox风险比例模型建模

2. Cox风险比例模型效果评估

3.Cox风险比例模型预测流失用户

4.改善运营策略,防止用户流失

生存分析(survivalanalysis)源于生物医学,早期主要是是对生存时间进行分析,后来该方法也应用于各类商业分析,主要研究用户从一种状态转变到另一种状态所经历的时间。举个例子来说,在互联网行业,用户流失是较为常见的分析主题,生存分析法就可以运用于探究用户从进入互联网产品到流失这一过程的转变时长。这一期内容,小编会运用生存分析方法通过Python预测用户流失周期。

1

数据基本情况探索

此处笔者使用IBM用户流失数据集,该数据及来源于Kaggle,包括每个客户所签署的服务、客户账号信息以及用户个人信息等多个维度的用户属性数据。在该数据集中,流失用户的定义为在上个月之内离开的用户,数据集已经给出用户流失标签。

在正式作数据预处理之前,数据分析师需要了解数据的基本情况,比如查看数据有哪些字段、各个字段是什么类型、有没有缺失值、异常值等情况。数据分析师对数据的基本情况做到心中有底对后续的数据预处理和分析都是有极大帮助的。首先,通过如下代码读入数据并且查看基本情况。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#导入此次分析所需要的包
importmath as mt
importnumpy as np
importpandas as pd
fromscipy.stats import norm
importscipy
importmatplotlib.pyplot as plt
importseaborn as sns
 
survival_data=pd.read_csv("survival_ananlysis_data.csv")
survival_data.info()
 
 
<class'pandas.core.frame.DataFrame'>
RangeIndex:7043 entries, 0 to 7042
Datacolumns (total 21 columns):
Column            Non-Null   Count  Dtype 
customerID        7043 non-null   object
gender            7043 non-null   object
SeniorCitizen     7043 non-null   int64 
Partner           7043 non-null   object
Dependents        7043 non-null   object
tenure            7043 non-null   int64 
PhoneService      7043 non-null   object
MultipleLines     7043 non-null   object
InternetService   7043 non-null   object
OnlineSecurity    7043 non-null   object
OnlineBackup      7043 non-null   object
DeviceProtection  7043 non-null   object
TechSupport       7043 non-null   object
StreamingTV       7043 non-null   object
StreamingMovies   7043 non-null   object
Contract          7043 non-null   object
PaperlessBilling  7043 non-null   object
PaymentMethod     7043 non-null   object
MonthlyCharges    7043 non-null   float64
TotalCharges      7043 non-null   object
Churn             7043 non-null   object
dtypes:float64(1), int64(2), object(18)
memoryusage: 1.1+ MB

由上述的结果可知,IBM用户流失数据集中,包括了数值变量,也包括了分类变量。对于数值变量来说,数据分析师需要了解数值变量的数值范围,而对于分类变量来说,数据分析师则需要知道分类变量有多少种类别。在数值类型字段中,'TotalCharges'字段不仅存在缺失值,而且不是数值类型,所以需要先填补缺失值并将其转换为数值形式。如下代码实现了'TotalCharges'缺失值的填补、数值类型的转换以及数值变量基本信息的展示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
survival_data['TotalCharges']= survival_data[['TotalCharges']].replace([' '], '0')
survival_data['TotalCharges']= pd.to_numeric(survival_data['TotalCharges'])
survival_data.describe().transpose()
 
                  count       mean        std        min          25%        50%      75%          max
SeniorCitizen     7043.0     0.16        0.37       0.00         0.00        0.00     0.00        1.00
tenure            7043.0     32.37       24.56      0.00         9.00        29.00    55.00       72.00
MonthlyCharges    7043.0     64.76       30.09      18.25        35.50       70.35    89.85       118.75
TotalCharges      7043.00    2279.73     2266.79    0.00         398.55      1394.55  3786.60     8684.80
 

了解了数值变量的基本信息,如下代码实现了分类变量的基本信息的展示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
survival_data.describe(include='object').T
                   count                        unique             top                      freq
customerID         7043                         7043                6128-AQBMT               1
gender             7043                         2                       Male                  3555
Partner            7043                         2                       No                    3641
Dependents         7043                         2                       No                    4933
PhoneService       7043                         2                       Yes                   6361
MultipleLines      7043                         3                       No                    3390
InternetService    7043                         3                       Fiberoptic            3096
OnlineSecurity     7043                         3                       No                    3498
OnlineBackup       7043                         3                       No                    3088
DeviceProtection   7043                         3                       No                    3095
TechSupport        7043                         3                       No                    3473
StreamingTV        7043                         3                       No                    2810
StreamingMovies    7043                         3                       No                    2785
Contract           7043                         3               Month-to-month                3875
PaperlessBilling   7043                         2                       Yes                   4171
PaymentMethod      7043                         4               Electronic check              2365
Churn              7043                         2                       No                    5174

对于较为重要的字段,我们进行数据可视化展示,如下代码实现了用户留存时间、每月付费、总付费三个字段在流失用户和留存用户之间的差异对比以及整个数据集中流失和留存用户的数量展示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fig,axes= plt.subplots(nrows=2,ncols=2, figsize=(10,8))
keyvalue= survival_data[['tenure','MonthlyCharges','TotalCharges']]
for ax,column in zip(axes.ravel(),keyvalue):
    sns.boxplot(x=survival_data['Churn'],
          y=keyvalue[column], ax=ax)
    plt.tight_layout()
sns.countplot(x=survival_data['Churn'],alpha=.95)

如图1所示,该数据集中留存用户远远多于流失用户,留存用户的留存时间、总消费金额长于流失用户,但留存用户的月付费金额少于流失用户。

图1流失与费流失用户各个特征对比

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据万花筒 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
老款macbookpro使用BootCamp安装windows10双系统
首先,为什么要安装windows?我使用的是13款15寸视网膜屏macbookpro,采用I7-3740MQ处理器,16G内存,500G固态和GT650M显卡;没错,这是一台独显版,即便其性能甚至不如今年新出的英特尔核显,但他仍然有着独显的骄傲。实测,在macos下,运行csgo卡到不知所措,而在win10下却能在同等设置流畅的rushB。诚然,在windows下很热,但那是完全发挥出硬件性能的热(也可能是我过期硅脂的问题,可以看我之前的整备文章),是显卡“打工人”澎湃的热情,毕竟单热管是苹果公司祖传的梦幻配置。macos下其实也很热,很多人觉得不热可能是使用了错误的温度查看软件,建议使用Macs Fan Control软件查看温度。
王忘杰
2022/09/21
3.5K0
老款macbookpro使用BootCamp安装windows10双系统
苹果电脑MacBook Air、MacBook Pro怎么安装win10双系统或Windows软件
苹果电脑MacBook Air、MacBook Pro以及台式机以其精致的外观,和稳定的系统收到了很多程序员、视频剪辑师以及平面设计师的好评,但对一般人来说还是用得不顺手,者就需要安装我们熟悉的另外一个系统——Windows来解决了。下面兔八哥爱分享就教你如何在你的苹果电脑上安装双系统,Mac OS系统也可以用,Windows系统和Windows软件也可以使用。
用户9208731
2023/03/05
3.8K0
苹果电脑MacBook Air、MacBook Pro怎么安装win10双系统或Windows软件
Windows10+Ubuntu双系统安装
最近因为毕设重新回归Ubuntu,手头有一台装了Win10的ThinkPad X240s,最终成功完成了Windows 10 教育版和Ubuntu Kylin 15.10 的双系统配置,下文(多图慎入)是我完成整个过程的手记。 安装方式 Ubuntu是很多Linux初学者最理想的选择,如果你恰好对Windows系列审美疲劳或者累觉不爱,那就要听好,有三种方法助你走进Ubuntu新世界。 虚拟机安装 原料:Ubuntu Kylin的ISO、VMware或VirtualBox 优点:一条龙服务,安全简单 缺
小小科
2018/05/02
4.5K0
Windows10+Ubuntu双系统安装
mac系统安装win10双系统「建议收藏」
一个月前,为了在家里学习单片机,在mac book air系统基础上,安装了win10,搞了一个双系统。
全栈程序员站长
2022/11/10
1.5K0
UltraISO软碟通老牌的ISO编辑软件V9.76
UltraISO是一款国产软件,且是少有的良心软件。具有打开ISO、导出ISO、编辑ISO、刻录光盘等功能。虽是一款收费系统工具,价格不贵,并且网上流传的各类激活码一直有效。但是如果正式使用,还是建议前往官网购买正版授权,毕竟咱们的版权意识越来越高了~~~DDDD
张旭博客
2022/12/27
2.4K0
UltraISO软碟通老牌的ISO编辑软件V9.76
自带win10系统换win7的那些坑
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/135729.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/05
2.6K0
mac双系统安装方法_macbook如何安装双系统
Mac用户在使用过程中,多少有的时候还会使用Windows,想装一个咋办?找某宝需要花钱150元,看这篇文章,十几分钟看明白,自己动手丰衣足食!所以本文将以图文教程教你如何安装双系统,开机随意选择,想用什么用什么!尽管我不是很喜欢用Windows…….
全栈程序员站长
2022/11/08
6.4K0
mac双系统安装方法_macbook如何安装双系统
win10安装ubuntu「建议收藏」
为了能更好地学python,本来打算装个双系统,用Linux写python,不过发现双系统切换起来麻烦了点,然后就发现有虚拟机这东西。花费了一些时间,最后成功通过VMware Workstation Pro 14虚拟机安装了ubuntu,在此将安装教程整合一下,供需要者参考。
全栈程序员站长
2022/07/29
1.1K0
win10安装ubuntu「建议收藏」
win10 centos 双系统安装
程序员中对使用的系统据说有个歧视链,就是mac歧视linux,linux歧视windows。当然,这只是一个段子,但是根据岗位的不同,有的系统更便利,对于开发来说,mac和linux比较方便,Windows会有一些设置啥的比较麻烦。而像我这种运维菜鸟,各种系统都会接触一些,但是自己刚写的shell脚本最好是centos或者Redhat等系统测试,因为公司的大多数服务器都是在这些系统上跑的。为了方便自己学习,我决定在我的破笔记本上装个双系统玩玩,这一玩就是4-5天。最终搞定。中间遇到不少坑,这里总结一下分享给大家。
DBA札记
2021/07/06
3.2K0
MacBook M1 Windows for ARM虚拟机体验
大家好,我是 刚进入春天还没来得及踏青又开始从早忙到晚的 蛮三刀。去年给大家带来了一篇比较详尽的MacBook M1评测。评测经历了全网的热情转载,成为了我唯一的一篇爆款文章(我该哭还是该笑!)。
蛮三刀酱
2022/01/05
3.3K1
MacBook M1 Windows for ARM虚拟机体验
Mac苹果电脑安装Windows系列系统
描述:苹果电脑安装Windows系统是一部分人的想法(实际上不建议,发挥不出Mac笔记本的实际功能与效率); 但是苹果公司为了让Mac进入广阔的市场,开发了Bootcamp用Mac的应用帮助引导windows系统;
全栈工程师修炼指南
2020/10/26
3.6K0
Mac苹果电脑安装Windows系列系统
如何安装Windows操作系统
博主喜欢以最原始最直接的方式安装系统,并且不喜欢安装Ghost、精简、修改等等各种操作系统,在这里分享一个一直在用,看起来麻烦博主却觉得最适合个人安装操作系统的方式,请往下看,欢迎指正交流分享
全栈程序员站长
2022/09/05
1.8K0
如何安装Windows操作系统
使用 Rufus 创建 win10 启动盘(系统镜像大于4G)
今天突然被问到关于安装 win10 系统的事儿,我之前有做过 win10 启动盘不过由于时间太久已经给忘了233 借此机会在这里也做个记录。
2Broear
2024/03/12
2K0
使用 Rufus 创建 win10 启动盘(系统镜像大于4G)
U盘pe(理论大白菜、优启通、微PE都可以) 装ESXI方案 (非通用UltraISO重做启动U盘),省U盘「建议收藏」
此文是我发的一篇的准备工作,因为ESXi 6.7刚发布的原因,很多同学等着升级,故而先写了出来。原文如下:
全栈程序员站长
2022/10/03
8.7K0
U盘pe(理论大白菜、优启通、微PE都可以) 装ESXI方案 (非通用UltraISO重做启动U盘),省U盘「建议收藏」
【安装教程】Win10与Ubuntu16.04双系统安装教程
实验室的项目的客户方是机场,所有程序必须在windows环境运行,但是为了学习深度学习中目标检测的RCNN系列算法,论文代码是caffe框架下,因此必须在Ubuntu16.04下安装caffe。为了兼顾两者,自己开始了双系统的安装之路。
AI那点小事
2020/04/20
4.8K0
【安装教程】Win10与Ubuntu16.04双系统安装教程
Mac使用Boot Camp安装win10(不用U盘)
1、从微软官网下载win10专业版本iso文件(文件有4.6G,官网白天下载很慢,晚上下载快点);
全栈程序员站长
2022/08/27
5K0
Mac使用Boot Camp安装win10(不用U盘)
联想Win10安装Ubuntu双系统教程
前言:最近为了更好的做一名程序员(猿),所以准备装一个双系统,也就是Ubuntu系统,网上坑太多,所以决定自己写一点操作步骤
全栈程序员站长
2022/09/15
3.9K0
联想Win10安装Ubuntu双系统教程
讲解苹果系统安装WIN10系统-双系统
今天接到手的是一台2011年I5 DDR3 4G内存的一台Macbook Air,机主要求安装WIN10系统,刚开始我用bootcamp安装是发现不行的,后面用PE来进行安装.
团团生活志
2022/08/16
2.3K0
win10下装ubuntu双系统(免U盘)
最近决定在win10的基础上装一个ubuntu系统用来管理服务器。但是有一个问题,前段时间U盘不慎丢失,没有启动盘,又想装ubuntu双系统,该怎么办呢?基于以前装黑苹果的经历,决定用EasyBCD做引导的方式,试了试还可以,过程如下。
星尘的一个朋友
2020/11/25
15.9K1
win10下装ubuntu双系统(免U盘)
windows安装双系统教程
2016-04-2222:19:23 发表评论 1,001℃热度 下载windows系统 安装windows系统 目录 装双系统其实mac下更难,windows电脑装双windows系统很简单,但
timhbw
2018/05/03
4.5K0
推荐阅读
相关推荐
老款macbookpro使用BootCamp安装windows10双系统
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验