数据挖掘-07-航空公司客户价值分析(包括数据和代码)
文章目录
- 0. 数据代码下载
- 1. 背景与挖掘目标
- 2. 导入相关库,加载数据
- 2.1客户基本信息分布
- a. 绘制会员性别比例饼图
- b. 绘制会员各级别人数条形图
- c. 绘制年龄分布图
- 2.2 客户乘机信息分布分析
- a. 绘制客户飞行次数箱线图
- b. 绘制客户总飞行公里数箱线图
- 2.3 客户积分信息分布分析
- a. 绘制会员总累计积分箱线图
- 3. 相关性分析
- 4. 数据预处理
- 4.1 数据变换
- 5. K-means客户聚类分析
- 5.1 绘制客户关系雷达图
0. 数据代码下载
关注公众号:『AI学习星球』
回复:航空公司客户价值分析 即可获取数据下载。
算法学习、4对1辅导、论文辅导或核心期刊可以通过公众号或CSDN滴滴我

1. 背景与挖掘目标
客户关系管理是精准化运营的基础,而客户关系管理的核心是客户分类。通过客户分类,对客户群体进行细分,区别出低价值客户与高价值客户,对不同的客户群体开展不同的个性化服务,将有限的资源合理地分配给不同价值的客户,从而实现效益最大化。
总体流程:
- 抽取航空公司2012年4月1日至2014年3月31日的数据。
- 对抽取的数据进行数据探索分析与预处理,包括数据缺失值与异常值的探索分析、数据清洗、特征构建、标准化等操作。
- 基于RFM模型,使用K-Means算法进行客户分群。
- 针对模型结果得到不同价值的客户,采用不同的营销手段,提供定制化的服务。
2. 导入相关库,加载数据
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
plt.style.use('ggplot')
%matplotlib inline
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
air_data = pd.read_csv('air_data.csv',encoding='utf8')
air_data
查看数据结构,6W+的数据,44个字段,包含了客户的基本信息,客户乘机信息,和客户的积分信息

air_data.head()

air_data.info()

2.1客户基本信息分布
选取客户基本信息中的入会时间、性别、会员卡级别和年龄字段进行探索分析,探索客户的基本信息分布情况
#处理入会时间,拿到年份,并按时间排序
air_data['year'] = pd.to_datetime(air_data['FFP_DATE']).dt.year
air_data = air_data.sort_values(by=['year'],ascending=True)
air_data = air_data.reset_index(drop=True)
sns.countplot('year',data=air_data)
plt.title('每年入会人数',fontsize=14)

a. 绘制会员性别比例饼图
air_data['GENDER'].value_counts().plot.pie(shadow=True,autopct='%.2f%%',labels=['男','女'])

b. 绘制会员各级别人数条形图
air_data.FFP_TIER.value_counts().plot.bar(label='grade',color='dodgerblue')
plt.title('会员各级别人数', fontsize=20)
plt.xlabel('会员等级', fontsize=14)
plt.ylabel('人数', fontsize=14)

c. 绘制年龄分布图
age = air_data['AGE'].dropna()
age = age.astype('int64')
fig = plt.figure(figsize = (5 ,10))
plt.boxplot(age, labels = ['AGE'],patch_artist=True,boxprops = {'facecolor':'lightblue'})
plt.title('age')

可以看出大部分会员年龄集中在30~50岁之间,极少量的会员年龄小于20岁或高于60岁,且存在一个超过100岁的异常数据
2.2 客户乘机信息分布分析
lte = air_data['LAST_TO_END']
plt.figure(figsize = (5,8))
plt.boxplot(lte,patch_artist=True,labels = ['Time'],boxprops = {'facecolor':'lightblue'})
plt.title('乘机时长分布箱线图')

a. 绘制客户飞行次数箱线图
fc = air_data['FLIGHT_COUNT']
plt.figure(figsize = (5 ,8))
plt.boxplot(fc, patch_artist=True,labels = ['FLIGHT_COUNT'],boxprops = {'facecolor':'lightblue'})
plt.title('飞行次数箱线图')

b. 绘制客户总飞行公里数箱线图

客户的飞行次数与总飞行公里数也明显地分为两个群体,大部分客户集中在箱型图下方的箱体中,少数客户分散分布在箱体上界的上方,这部分客户很可能是高价值客户,因为其飞行次数和总飞行公里数明显超过箱体内的其他客户
2.3 客户积分信息分布分析
ec = air_data['EXCHANGE_COUNT']fig = plt.figure(figsize = (8 ,5))
plt.hist(ec, bins=5, color='lightblue')
plt.xlabel('兑换次数')
plt.ylabel('会员人数')
plt.title('会员兑换积分次数分布直方图')

绘制会员兑换积分次数直方图,绝大部分客户的兑换次数在0~10的区间内,这表示大部分客户都很少进行积分兑换
a. 绘制会员总累计积分箱线图
ps = air_data['Points_Sum']fig = plt.figure(figsize = (5 ,8))
plt.boxplot(ps, patch_artist=True,labels = ['总累计积分'], # 设置x轴标题boxprops = {'facecolor':'lightblue'}) # 设置填充颜色
plt.title('客户总累计积分箱线图')

一部分客户集中在箱体中,少部分客户分散分布在箱体上方,这部分客户的积分要明显高于箱体内的客户的积分。
3. 相关性分析
air_data['AGE'].fillna(0,inplace=True)
air_data['AGE'].astype('int64')data_2 = air_data[['FFP_TIER','FLIGHT_COUNT','LAST_TO_END','SEG_KM_SUM','EXCHANGE_COUNT','Points_Sum','AGE']]data_corr = data_2.corr(method = 'pearson')
print('相关性矩阵为:\n',data_corr)

plt.subplots(figsize=(10, 10))
sns.heatmap(data_corr, annot=True, vmax=1, square=True, cmap='Blues')

可以看出部分属性间具有较强的相关性,如FLIGHT_COUNT(飞行次数)属性与SEG_KM_SUM(飞行总公里数)属性;也有部分属性与其他属性的相关性都较弱,如AGE(年龄)属性与EXCHANGE_COUNT(积分兑换次数)属性
4. 数据预处理
- 丢弃票价为空的记录
- 保留票价不为0的,或者平均折扣率不为0且总飞行公里数大于0的记录
- 丢弃年龄大于90的记录
air_data = air_data.dropna(axis=0,subset=['SUM_YR_1','SUM_YR_2'])
air_data = air_data[((air_data['SUM_YR_1']>0) | (air_data['SUM_YR_2']>0)) & (air_data['SEG_KM_SUM']>0) & (air_data['avg_discount']>0) &(air_data['AGE']<90)]
航空公司客户价值分析的LRFMC模型
在RFM模型中,消费金额表示在一段时间内客户购买该企业产品的金额的总和。由于航空票价受到运输距离、舱位等级等多种因素的影响,同样消费金额的不同旅客对航空公司的价值是不同的,例如,一位购买长航线、低等级舱位票的旅客与一位购买短航线、高等级舱位票的旅客相比,后者对于航空公司而言更有价值。因此这个特征并不适用于航空公司的客户价值分析。本案例选择客户在一定时间内累积的飞行里程M和客户在一定时间内乘坐舱位所对应的折扣系数的平均值C两个特征代替消费金额。此外,航空公司会员入会时间的长短在一定程度上能够影响客户价值,所以在模型中增加客户关系长度L,作为区分客户的另一特征。将清洗好的数据,保存,并重新读进来
air_data.to_csv('cleandata.csv')clean_data = pd.read_csv('cleandata.csv',encoding='utf8')
airline_selection = clean_data[['FFP_DATE','LOAD_TIME','LAST_TO_END','FLIGHT_COUNT','SEG_KM_SUM','avg_discount']]
airline_selection.head()

4.1 数据变换
将数据转换成“适当的”格式,以适应挖掘任务及算法的需要。
- 会员入会时间距观测窗口结束的月数L=会员入会时长
- 客户最近一次乘坐公司飞机距观测窗口结束的月数R=最后一次乘机时间至观测窗口末端时长(单位:月)
- 客户在观测时间内在公司累计的飞行次数F=观测窗口内的飞行次数
- 客户在观测时间内在公司累计的飞行里程M=观测窗口总飞行公里数(单位:公里 )
- 客户在观测时间内乘坐舱位所对应的折扣系数的平均值C=平均折扣率(单位:无)
在完成5个指标的数据提取后,发现5个指标的取值范围数据差异较大,为了消除数量级数据带来的影响,需要对数据进行标准化处理。
L = pd.to_datetime(airline_selection['LOAD_TIME']) - pd.to_datetime(airline_selection['FFP_DATE'])
L = L.astype('str').str.split().str[0]
L = L.astype('int')/30airline_features = pd.concat([L,airline_selection.iloc[:,2:]],axis = 1)
airline_features.columns = ['L','R','F','M','C']
print('构建的LRFMC属性前5行为:\n',airline_features.head())from sklearn.preprocessing import StandardScaler
data = StandardScaler().fit_transform(airline_features)
#np.savez('./airline_scale.npz',data)
print('标准化后LRFMC五个属性为:\n',data[:5,:])

5. K-means客户聚类分析
import sklearn.cluster as sc
model = sc.KMeans(n_clusters=5,n_jobs=4,random_state=123)
model.fit(data)
print('聚类中心:\n',model.cluster_centers_)
print('样本类别标签:\n',model.labels_)
print('不同类别样本的数目:\n',pd.Series(model.labels_).value_counts())

cluster_center = pd.DataFrame(model.cluster_centers_,\columns = ['ZL','ZR','ZF','ZM','ZC'])
cluster_center.index = pd.DataFrame(model.labels_ ).\drop_duplicates().iloc[:,0]
print(cluster_center)

5.1 绘制客户关系雷达图
labels = ['ZL','ZR','ZF','ZM','ZC']
legen = [' customers' + str(i + 1) for i in cluster_center.index]
lstype = ['-','--',(0, (3, 5, 1, 5, 1, 5)),':','-.']
kinds = list(cluster_center.iloc[:, 0])
并转换为 np.ndarray
cluster_center = pd.concat([cluster_center, cluster_center[['ZL']]], axis=1)
centers = np.array(cluster_center.iloc[:, 0:])n = len(labels)
angle = np.linspace(0, 2 * np.pi, n, endpoint=False)
angle = np.concatenate((angle, [angle[0]]))fig = plt.figure(figsize = (8,6))
ax = fig.add_subplot(111, polar=True) for i in range(len(kinds)):ax.plot(angle, centers[i], linestyle=lstype[i], linewidth=2, label=kinds[i])
ax.set_thetagrids(angle * 180 / np.pi, labels)
plt.title('Customer Profile Analysis')
plt.legend(legen)

通过建立合理的客户价值评估模型,对客户进行分类,分析比较不同客户群体的价值,并制定相应的营销策略,对不同的客户群提供个性化的客户服务是必须的和有效的。
关注公众号:『AI学习星球』
回复:航空公司客户价值分析 即可获取数据下载。
算法学习、4对1辅导、论文辅导或核心期刊可以通过公众号或CSDN滴滴我

相关文章:
数据挖掘-07-航空公司客户价值分析(包括数据和代码)
文章目录 0. 数据代码下载1. 背景与挖掘目标2. 导入相关库,加载数据2.1客户基本信息分布a. 绘制会员性别比例饼图b. 绘制会员各级别人数条形图c. 绘制年龄分布图 2.2 客户乘机信息分布分析a. 绘制客户飞行次数箱线图b. 绘制客户总飞行公里数箱线图 2.3 客户积分信息…...
浏览器 css 默认的字体图表
以下是一些常见的浏览器(PC端)中网站 CSS 默认字体及其对应的字体系列(font family): 浏览器默认字体字体系列(font family)ChromeArial, sans-serif“Arial”, “Helvetica Neue”, Helvetica…...
JAVA:注册表窗口的实现
目录 题目要求: 思路大意: 窗体的实现: 窗口A: 窗口B: 窗体之间的构思: 关键代码的实现: 窗口A: 封装列表: 窗口B: 题目要求: 使用…...
Liunx Centos 防火墙操作
liunx centos 防火墙 查看防火墙状态 systemctl status firewalld查看已经开放的端口 firewall-cmd --list-ports添加端口3306 firewall-cmd --zonepublic --add-port3306/tcp --permanent重启防火墙 firewall-cmd --reload数据库开放账号可以外网登陆 mysql -u root -p …...
VirtualBox 和 Vagrant 快速安装 Centos7 报错
VirtualBox 和 Vagrant 快速安装 Centos7 报错 今天尝试用 VirtualBox 和 Vagrant 快速安装 Centos7,BUG 多多! 1)下载 6.1.26 版本 VirtualBox,Windows11 不兼容???什么鬼? 解决…...
使用Python进行数学四则运算
当我们讨论到Python中的计算问题时,我们必然涉及到加法运算符()、减法运算符(-)、乘法运算符(*)以及除法运算符(/)这四大常见的算术运算。下面,我将为您展示如…...
成都工业学院2021级操作系统专周课程设计FCFS,SSTF,SCAN,LOOK算法的实现
运行环境 操作系统:Windows 11 家庭版 运行软件:CLion 2023.2.2 源代码文件 #include <iostream> #include <vector> #include <algorithm> #include <random> using namespace std;// 生成随机数 int generateRandomNumber…...
【51单片机系列】矩阵按键扩展实验
本文对矩阵按键的一个扩展,利用矩阵按键和动态数码管设计一个简易计算器。代码参考:https://blog.csdn.net/weixin_47060099/article/details/106664393 实现功能:使用矩阵按键,实现一个简易计算器,将计算数据及计算结…...
大数据云计算——Docker环境下部署Hadoop集群及运行集群案列
大数据云计算——Docker环境下部署Hadoop集群及运行集群案列 本文着重介绍了在Docker环境下部署Hadoop集群以及实际案例中的集群运行。首先,文章详细解释了Hadoop的基本概念和其在大数据处理中的重要性,以及为何选择在Docker环境下部署Hadoop集群。接着&…...
计算机网络链路层(期末、考研)
计算机网络总复习链接🔗 目录 组帧差错控制检错编码纠错编码 流量控制与可靠传输机制流量控制、可靠传输与滑动窗口机制单帧窗口与停止-等待协议多帧滑动窗口与后退N帧协议(GBN)多帧滑动窗口与选择重传协议 介质访问控制信道划分介质访问控制…...
洛谷 P8794 [蓝桥杯 2022 国 A] 环境治理
文章目录 [蓝桥杯 2022 国 A] 环境治理题目链接题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 思路解析CODE给点思考 [蓝桥杯 2022 国 A] 环境治理 题目链接 https://www.luogu.com.cn/problem/P8794 题目描述 LQ 国拥有 n n n 个城市,从 0 0 …...
力扣面试150题 | 买卖股票的最佳时期
力扣面试150题 | 买卖股票的最佳时期 题目描述解题思路代码实现 题目描述 121.买卖股票的最佳时期 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一…...
uniapp 之 图片 视频 文件上传
<view class"" style"padding: 24rpx 0"><text>相关资料 <text class"fs-26 color-666">(图片、视频、文档不超过9个)</text> </text><view class"flex align-center" style&…...
MIT线性代数笔记-第28讲-正定矩阵,最小值
目录 28.正定矩阵,最小值打赏 28.正定矩阵,最小值 由第 26 26 26讲的末尾可知在矩阵为实对称矩阵时,正定矩阵有以下四种判定方法(都是充要条件): 所有特征值都为正左上角所有 k k k阶子矩阵行列式都为正&…...
Python:五种算法RFO、GWO、DBO、HHO、SSA求解23个测试函数
一、五种算法介绍 (1)红狐优化算法(Red fox optimization,RFO) (2)灰狼优化算法(Grey Wolf Optimizer,GWO) (3)蜣螂优化算法(Dung beetle opti…...
如何参与开源项目
大家好,受卡哥邀请,和大家分享一下开源活动的相关经验。首先简要自我介绍一下,我目前在一所985研二在读,主要学习大数据方向,从去年开始参与开源活动近一年时间,也对多个Apache框架有所贡献。 由于学校或专…...
twitter开发如何避坑
此篇介绍在twitter开发过程中遇到的坑(尤其是费用的坑)。 一坑:免费接口少! 刚开始申请免费API使用的时候,twitter官方只会给你三个免费接口使用。 发twitter、删推文、查看用户信息。 这三个接口远远不够开发中使用…...
人工智能算法合集
人工智能(Artificial Intelligence,AI)作为当今世界最热门的技术领域之一,正日益改变着我们的生活方式、工作方式甚至整个社会结构。在人工智能领域中,算法是至关重要的一环,它们是实现人工智能技术应用的核…...
PythonStudio:一款国人写的python及窗口开发编辑IDE,可以替代pyqt designer等设计器了
本款软件只有十几兆,功能算是强大的,国人写的,很不错的python界面IDE.顶部有下载链接。下面有网盘下载链接,或者从官网直接下载。 目前产品免费,以后估计会有收费版本。主页链接:PythonStudio-硅量实验室 作…...
大模型应用_FastGPT
1 功能 整体功能,想解决什么问题 官方说明:FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景!个人体会…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
