Python数据分析-电信客户流量预测与分析
一、背景介绍
研究背景:在快速发展和高度竞争的电信行业中,客户流失已成为运营商面临的主要挑战之一。电信服务的普及和用户选择的多样性使得保持客户忠诚度变得越来越困难。在这种背景下,准确预测客户流失并采取相应措施,对于运营商保持市场竞争力至关重要。。。
二、研究意义
研究意义:提高客户留存率:通过预测和识别可能流失的客户,电信运营商可以采取针对性的措施来提高客户留存率,比如提供定制化服务或优惠。优化市场策略:深入分析用户行为和特征有助于运营商更好地理解市场需求,从而优化其产品和服务,提高市场竞争力。。。。
三、研究问题
在当前的市场环境下,电信运营商面临的一个主要问题是如何准确预测并有效减少客户流失(churn)。客户流失不仅直接影响运营商的收入,还可能引起品牌价值和市场份额的下降。。。。
四、实证分析
本文数据集的原始图如下:
数据和完整代码
报告代码数据

据集具体指标含义如下:
使用月数:某段时间用户使用服务月数;
流失用户:观测期内用户是否已经流失。1=是,0=否;
套餐金额:用户购买的月套餐金额,1为96元以下,2为96~225 元,3为225 元以上;
额外通话时长:实际通话时长减去套餐内通话时长的月均值(单位:min),这部分需要额外交费;
额外流量:实际流量减去套餐内流量的月均值(单位:ME),这部分需要额外交费;
改变行为:是否曾经更改过套餐金额,1=是,0=否;
服务合约:是否与运营商签订过服务合约,1=是,0=否;
关联购买:用户在移动服务中是否同时办理其他业务(主要是固定电话和宽带业务),1=同时办理一项其他业务,2=同时办理两项其他业务,0=没有办理其他业务;
集团用户:办理的是否是集团业务,相比个人业务,集体办理的号码在集团内拨打有一定优惠。1=是,0=否。
首先导入基础的包:
随后读取数据,并展示数据前后5行:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
plt.rcParams['font.sans-serif'] = ['KaiTi'] #中文
plt.rcParams['axes.unicode_minus'] = False #负号

查看数据集整体形状:

其中包括4975个用户,每个用户包括8个特征。
随后查看一下数据类型:

接下来进行描述性统计分析,使用describe()函数:
data.describe()
该函数会将数据集的总计数值、最大最小值、中位数、均值、分位数等等展示计算出来。每列的统计数据描述了该列数据的分布情况。例如,“ID”列显示的计数是4975,意味着数据集中有4975个观测值。。。。
接下来进行数据集的缺失值的可视化:
import missingno as msno
msno.matrix(data)
发现数据集很完整,并没有缺失值。
但是为了流程的完整性继续进行处理:
#若是有一行全为空值就删除
data.dropna(how='all',inplace=True)
#缺失到一定比例就删除
miss_ratio=0.3
for col in data.columns:if data[col].isnull().sum()>data.shape[0]*miss_ratio:print(col)data.drop(col,axis=1,inplace=True)
。。。
填充缺失值:
缺失值有很多填充方式,可以用中位数,均值,众数。
也可以就采用那一行前面一个或者后面一个有效值去填充空的。
data.fillna(data.median(),inplace=True) #mode,mean
data.fillna(method='ffill',inplace=True) #pad,bfill/backfill
接下来进行特征工程,首先对训练集取出y。
#剩下的变量独热处理
data=pd.get_dummies(data)
我们还要画图查看每个X的分布,查看特征变量的箱线图分布。
dis_cols = 4 #一行几个
dis_rows = len(columns)
plt.figure(figsize=(4 * dis_cols, 4 * dis_rows))for i in range(len(columns)):plt.subplot(dis_rows,dis_cols,i+1)sns.boxplot(data=data[columns[i]], orient="v",width=0.5)plt.xlabel(columns[i],fontsize = 20)
plt.tight_layout()
#plt.savefig('特征变量箱线图',formate='png',dpi=500)
plt.show()

然后还需要查看响应变量y的分布
plt.figure(figsize=(6,2),dpi=128)
plt.subplot(1,3,1)
y.plot.box(title='响应变量箱线图')
plt.subplot(1,3,2)
y.plot.hist(title='响应变量直方图')
plt.subplot(1,3,3)
y.plot.kde(title='响应变量核密度图')
#sns.kdeplot(y, color='Red', shade=True)
#plt.savefig('响应变量.png')
plt.tight_layout()
plt.show()
箱形图(左图):显示了单个变量的五数概括(最小值、第一四分位数、中位数、第三四分位数和最大值)以及离群点。在这个箱形图中,可以看到一个明显的离群点。直方图(中图):显示了数据的分布情况,这里几乎所有的数据都集中在一个单一的值上
然后对X异常值处理,先标准化:
scaler = StandardScaler()
X_s = scaler.fit_transform(data)
相关系数热力图查看

深紫色的格子表示两个变量之间有较强的负相关性。相关系数可能是-0.97、-0.98这样的低值,意味着这些变量之间存在强烈的反向关系,一个变量的增加往往伴随着另一个变量的减少。。。。。
接下来模型构建与评估
from sklearn.naive_bayes import BernoulliNB
from sklearn.neighbors import KNeighborsClassifier
from sklearn.ensemble import AdaBoostClassifier ##自适应提升Adaboost
for i in range(3):model_C=model_list[i]name=model_name[i]model_C.fit(X_train_s, y_train)s=model_C.score(X_val_s, y_val)print(name+'方法在验证集的准确率为:'+str(s))
第一个模型的评分为0.914572864321608。
第二个模型的评分为0.9668341708524714。
第三个模型的评分为0.9829145728643216。
分析这些结果,我们可以看出:
所有模型在验证集上的得分都相当高,意味着它们对数据有很好的预测能力。
第三个模型具有最高的评分(约0.983),这可能表明它在这三个模型中预测验证集的效果最好。从以上结果可以看出,三种机器学习方法的最终预测结果都较好,准确率均在90%以上,其中分类情况最优的是自适应提升方法随后是KNN,其次是二项朴素贝叶斯。
五、总结
在这个案例中,我们针对某电信运营商的用户手机号码的使用数据进行了分析和研究,旨在预测客户是否会在未来一段时间内流失。我们采用了三种机器学习模型,包括二项朴素贝叶斯模型、K最近邻(KNN)模型和自适应提升模型,并对它们的预测效果进行了比较。最终,我们发现自适应提升模型在预测客户流失方面表现最优。。。。。
相关文章:
Python数据分析-电信客户流量预测与分析
一、背景介绍 研究背景:在快速发展和高度竞争的电信行业中,客户流失已成为运营商面临的主要挑战之一。电信服务的普及和用户选择的多样性使得保持客户忠诚度变得越来越困难。在这种背景下,准确预测客户流失并采取相应措施,对于运…...
动态人物抠图换背景 MediaPipe
pip下载 MediaPipe pip install mediapipe -i 手部特征点模型包包含一个手掌检测模型和一个手部特征点检测模型。手掌检测模型在输入图片中定位手部,手部特征点检测模型可识别手掌检测模型定义的被剪裁手掌图片上的特定手部特征点。 由于运行手掌检测模型非常耗时&…...
Vue3 vite使用postcss-px-to-viewport(适配vant)
Vue3 vite使用postcss-px-to-viewport(适配vant) 安装vite.config.js配置 安装 npm install postcss-px-to-viewport-8-plugin -Dvite.config.js配置 import { fileURLToPath, URL } from node:urlimport { defineConfig } from vite import vue from …...
MCU复位时GPIO是什么状态?
大家一定遇到过上电或者复位时外部的MOS电路或者芯片使能信号意外开启,至此有经验的工程师就会经常关心一个问题,MCU复位时GPIO是什么状态?什么电路需要外部加上下拉? MCU从上电到启动,实际可分为复位前和复位后、初始…...
领先GPT-4o:Anthropic 推出新一代模型 Claude 3.5 Sonnet|TodayAI
Anthropic,全球领先的人工智能实验室之一,近日发布了其最新的人工智能模型——Claude 3.5 Sonnet。该模型不仅速度更快,成本更低,而且在多个关键任务上的表现超过了其前代模型 Claude 3 Opus。 更强的视觉功能与幽默感 Claude 3…...
使用AES,前端加密,后端解密,spring工具类了
学习python的时候,看到很多会对参数进行加密,于是好奇心驱使下,让我去了解了下AES加密如何在java中实现。 首先 npm install crypto-js 然后在你的方法中,给你们前端源码看看,因为我用的ruoyi框架做的实验ÿ…...
通过Spring-Data-Redis操作Redis
目录 一、搭建环境 (1)引入依赖 (2)自定义模板序列器 (3)编写配置文件 (4)操作方法 二、测试 一、搭建环境 (1)引入依赖 <dependencies><dep…...
自动驾驶ADAS
1 ToF摄像头分类 1.1 ToF原理 类似雷达测距,生成3D点云,或者叫3D贴图。ToF相机的分辨率一般在3万像素左右。ToF距离计算公式如图所示。 Figure 1-1 ToF距离计算公式 D:距离 c:光速 PHI:相位差 fmod:调制频率…...
Python+Pytest+Allure+Yaml接口自动化测试框架详解
PythonPytestAllureYaml接口自动化测试框架详解 编撰人:CesareCheung 更新时间:2024.06.20 一、技术栈 PythonPytestAllureYaml 版本要求:Python3.7.0,Pytest7.4.4,Allure2.18.1,PyYaml6.0 二、环境配置 1、安装python3.7,并配置…...
python turtle 001画两只小狗
效果图: 代码: pythonturtle001画两只小狗资源-CSDN文库 # 作者V w1933423import turtle # 导入turtle模块def draw_dogs():turtle.setup(800, 800) # 设置画布大小为800x800p turtle.Pen() # 创建一个画笔对象p.pensize(14) # 设置画笔大小为14p.…...
『亚马逊云科技产品测评』程序员最值得拥有的第一台专属服务器 “亚马逊EC2实例“
授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 引言 自2006年8月9日,在搜索引擎大会(SES San Jo…...
python 趣味习题_递归函数(炸弹迷宫路径计算)
@[toc] python 学习中,常会遇到一些百思不得其解的难题,但有时“灵光一现”找准方法,难题便会迎刃而解。 本专栏旨在记录本人解决问题的思考方法,及实现过程。有更好方法或对程序执行有疑问的伙伴,可在评论区留言,共同讨论。 题目要求 题目描述:在一串连续的迷宫(房间…...
免费翻译API及使用指南——百度、腾讯
目录 一、百度翻译API 二、腾讯翻译API 一、百度翻译API 百度翻译API接口免费翻译额度:标准版(5万字符免费/每月)、高级版(100万字符免费/每月-需个人认证,基本都能通过)、尊享版(200万字符免…...
深度测试中的隐藏面消除技术
by STANCH 标签:#计算机图形学 #深度测试 #深度测试 #隐藏面消除 1.概述 根据我们的日常经验,近处的物体会挡住后面的物体,在三维场景中通常通过深度缓冲来实现这样的效果。深度缓冲记录着屏幕对应的每个像素的深度值。模型一开始所在的局部…...
oracle merge的使用
Oracle中的MERGE语句是一个非常强大的工具,它允许用户在一个SQL语句中同时执行INSERT和UPDATE操作。以下是关于Oracle MERGE语句的详细使用说明: 1. 基本语法 MERGE INTO target_table USING source_table ON (merge_condition) WHEN MATCHED THEN …...
《数字图像处理》实验报告四
一、实验任务与要求 对 Fig0403.tif 进行傅里叶变换并显示其频谱图像;fft2(x) 对 Fig0405.tif 图像进行填充和非填充的高斯滤波,并观察其不同;paddedsize,fft2(x,m,n) 由 sobel 空间滤波算子生成相应的频率…...
算法04 模拟算法之一维数组相关内容详解【C++实现】
大家好,我是bigbigli,模拟算法我们将分为几个章节来讲,今天我们只看一维数组相关的题目 目录 模拟的概念 训练:开关灯 解析 参考代码 训练:数组变化 解析 参考代码 训练:折叠游戏 解析 参考代码 …...
【技术解码】百数SRM:如何助力企业快速优化供应链管理?
SRM应用是企业优化供应链管理的重要工具,它帮助企业全面管理供应商关系,从评估、选择到协同合作和绩效监控,确保供应链的稳定性和效率。 对于企业来说,通过全面管理供应商关系,可以降低采购风险,提升产品质…...
想要用tween实现相机的移动,three.js渲染的canvas画布上相机位置一点没动,如何解决??
🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…...
SQL连接与筛选:解析left join on和where的区别及典型案例分析
文章目录 前言数据库在运行时的执行顺序一、left join on和where条件的定义和作用left join on条件where条件 二、left join on和where条件的区别原理不同left join原理:where原理: 应用场景不同执行顺序不同(作用阶段不同)结果集…...
Awesome-Awesome终极指南:如何快速找到任何技术领域的最佳资源
Awesome-Awesome终极指南:如何快速找到任何技术领域的最佳资源 【免费下载链接】awesome-awesome A curated list of awesome curated lists of many topics. 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-awesome 在技术学习和开发过程中ÿ…...
MySQL 8.0.34和5.7.43双版本共存安装指南(Windows环境避坑大全)
MySQL 8.0与5.7双版本共存实战:Windows环境全流程避坑指南 1. 版本共存的核心挑战与解决方案 在开发环境中同时运行MySQL 8.0和5.7版本的需求日益普遍——可能是为了兼容旧系统,或是测试应用在不同版本下的表现。但Windows环境下实现双版本共存会遇到几个…...
Bambu Studio终极实战指南:5大核心技术深度解析与3D打印效率优化方案
Bambu Studio终极实战指南:5大核心技术深度解析与3D打印效率优化方案 【免费下载链接】BambuStudio PC Software for BambuLab and other 3D printers 项目地址: https://gitcode.com/GitHub_Trending/ba/BambuStudio Bambu Studio作为专为BambuLab系列3D打印…...
MaxKB社区版限制解除后,别忘了检查这3个地方!v1.10.2-lts实战经验分享
MaxKB社区版限制解除后的深度验证指南:v1.10.2-lts实战经验 当你按照教程完成MaxKB社区版的限制解除操作后,真正的挑战才刚刚开始。很多技术人员在修改代码并重启服务后,往往以为大功告成,却忽略了后续的关键验证步骤。本文将带你…...
Anaconda环境下Spyder升级保姆级教程(附常见问题解决方案)
Anaconda环境下Spyder升级全攻略与疑难排解手册 在Python数据科学领域,Spyder作为专为科学计算设计的集成开发环境(IDE),凭借其变量查看器、交互式控制台和强大的调试功能,已成为众多研究人员的首选工具。而Anaconda作为Python科学计算的瑞士…...
GitHub资源精准下载:DownGit实现90%带宽节省的技术方案
GitHub资源精准下载:DownGit实现90%带宽节省的技术方案 【免费下载链接】DownGit github 资源打包下载工具 项目地址: https://gitcode.com/gh_mirrors/dow/DownGit 在开源开发流程中,开发者经常需要从GitHub仓库获取特定文件夹资源。传统方式下&…...
EasyAnimateV5-7b-zh-InP效果对比:不同Sampling Method(Flow/Euler)画质差异
EasyAnimateV5-7b-zh-InP效果对比:不同Sampling Method(Flow/Euler)画质差异 你是不是也遇到过这样的困惑:用同一个图生视频模型,同样的图片和提示词,只是换了个采样方法,出来的视频效果就天差…...
windows 下使用 arthas 排查接口慢的问题
文章目录1、windows 如何安装 arthas2、在排查问题之前,先启动 arthas3、排查某个慢接口&方法4、更多功能参考官网文档1、windows 如何安装 arthas 进入 https://github.com/alibaba/arthas/releases,点击 arthas-bin.zip 进行下载。 解压下载完成后…...
Python打包神器大PK:Nuitka vs PyInstaller,谁才是你的菜?(附实测数据)
Python打包工具深度评测:Nuitka与PyInstaller的终极对决 当开发者需要将Python项目分发给没有Python环境的用户时,打包工具的选择往往成为关键决策。本文将深入分析两大主流工具Nuitka和PyInstaller在多个维度的表现,帮助开发者根据项目需求做…...
告别底噪和电流声:DIY蓝牙音箱的音频电路避坑指南(从TPA2019布线到电源滤波)
蓝牙音箱DIY进阶指南:从电路设计到音质优化的全流程解析 在电子DIY领域,蓝牙音箱制作看似简单,但要实现专业级的音质表现却需要跨越诸多技术门槛。许多爱好者完成基础组装后,常会遇到底噪明显、高频失真或低频浑浊等问题——这往往…...
