数据挖掘-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. 背景与挖掘目标

客户关系管理是精准化运营的基础,而客户关系管理的核心是客户分类。通过客户分类,对客户群体进行细分,区别出低价值客户与高价值客户,对不同的客户群体开展不同的个性化服务,将有限的资源合理地分配给不同价值的客户,从而实现效益最大化。

总体流程:

  1. 抽取航空公司2012年4月1日至2014年3月31日的数据。
  2. 对抽取的数据进行数据探索分析与预处理,包括数据缺失值与异常值的探索分析、数据清洗、特征构建、标准化等操作。
  3. 基于RFM模型,使用K-Means算法进行客户分群。
  4. 针对模型结果得到不同价值的客户,采用不同的营销手段,提供定制化的服务。

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. 数据预处理

  1. 丢弃票价为空的记录
  2. 保留票价不为0的,或者平均折扣率不为0且总飞行公里数大于0的记录
  3. 丢弃年龄大于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 数据变换

将数据转换成“适当的”格式,以适应挖掘任务及算法的需要。

  1. 会员入会时间距观测窗口结束的月数L=会员入会时长
  2. 客户最近一次乘坐公司飞机距观测窗口结束的月数R=最后一次乘机时间至观测窗口末端时长(单位:月)
  3. 客户在观测时间内在公司累计的飞行次数F=观测窗口内的飞行次数
  4. 客户在观测时间内在公司累计的飞行里程M=观测窗口总飞行公里数(单位:公里 )
  5. 客户在观测时间内乘坐舱位所对应的折扣系数的平均值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')/30

airline_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滴滴我
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/244659.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【二叉树相关问题】

文章目录 一、二叉树的三种遍历方式怎么看遍历结果相关题目&#xff1a;已知一颗二叉树的后续遍历序列为&#xff1a;GFEDCBA;中序遍历序列为&#xff1a;FGAEBDC。画出这棵二叉树思路代码版 二、先序线索树三、二叉树转树、或森林树转二叉树二叉树转树二叉树转森林森林转二叉树…

解析硬盘备份与云备份的差异

​  在数字信息时代&#xff0c;保护您的数据至关重要。外部硬盘驱动器 (HDD) 备份和云备份算是两种流行的数据备份方法。当然&#xff0c;每种方法都有其优点和考虑因素&#xff0c;选择正确的解决方案取决于您的具体需求和偏好。 一、外部硬盘备份 传统的数据备份方法之一是…

Java刷题篇——LeetCode118. 杨辉三角

1.题目描述 给定一个非负整数numRows&#xff0c;生成杨辉三角的前numRows行。 在杨辉三角中&#xff0c;每个数是它左上方和右上方的数的和。 示例1 输入&#xff1a;numRows 5 输出&#xff1a;[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1] 示例2 输入&#xff1a;numRows 1…

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(二)

系列文章目录 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型&#xff08;一&#xff09; 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型&#xf…

【Java8系列08】Java8中reducing妙用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

提升团队效率,防止员工飞单私单的秘诀!

在如今竞争激烈的商业环境中&#xff0c;每个企业都追求更高的销售业绩和客户满意度。然而&#xff0c;有些员工可能会利用V信等社交工具进行私下交易&#xff0c;导致公司的利益损失和客户信任的瓦解。所以&#xff0c;如何防止员工飞单私单成为了一个需要解决的问题。 在这里…

喜报丨迪捷软件入选2023年浙江省信息技术应用创新典型案例

12月6日&#xff0c;浙江省经信厅公示了2023年浙江省信息技术应用创新典型案例入围名单。本次案例征集活动&#xff0c;由浙江省经信厅、省密码管理局、工业和信息化部网络安全产业发展中心联合组织开展&#xff0c;共遴选出24个优秀典型解决方案&#xff0c;迪捷软件“基于全数…

单例模式:饿汉模式、懒汉模式

目录 一、什么是单例模式 二、饿汉模式 三、懒汉模式 一、什么是单例模式 单例模式是Java中的设计模式之一&#xff0c;能够保证某个类在程序中只存在唯一一份实例&#xff0c;而不会创建出多个实例 单例模式有很多实现方式&#xff0c;最常见的是饿汉和懒汉两种模式 二、…

KNN朴素贝叶斯(根据已知推测未知)

KNN&#xff08;哲学思想&#xff1a;物以类聚&#xff0c;人以群分&#xff09; KNN算法原理及示例1&#xff1a; 向量化 画点&#xff0c;计算欧式距离&#xff1a; 可行代码展示&#xff1a; #!/usr/bin/python # codingutf-8 ######################################### …

如何在 VeriStand 中设置反射内存通道

环境 硬件 cPCI-5565PIORC 软件 VeriStand 我正在设置我的反射内存 PXI 卡&#xff08;例如 cPCI-5565PIORC&#xff09;。 我可以在我的 PXI 系统之间使用反射内存发送/接收什么&#xff1f; 如何设置我的 PXI 系统之间共享的通道&#xff1f; 使用反射内存&#xff0c;您…

国际语音呼叫中心的工作流程

国际语音呼叫中心的工作流程一般包括以下几个步骤&#xff1a; 1.呼叫分配 当客户拨打企业的客服电话时&#xff0c;国际语音呼叫中心会自动将呼叫分配给示闲的客服代表&#xff0c;或者根据客户的需求&#xff0c;将呼叫转接给相应的客服代表。 2.客服代表接听电话 客服代…

网络小测------

使用软件PT7.0按照上面的拓扑结构建立网络&#xff0c;进行合理配置&#xff0c;使得所有计算机之间能够互相通信。并且修改各交换机的系统名称为&#xff1a;学号_编号&#xff0c;如你的学号为123&#xff0c;交换机Switch0的编号为0&#xff0c;则系统名称为123_0&#xff1…

史上最全的设计模式总结

从七月份开始一直到九月底才看完设计模式&#xff0c;在这个过程中我不敢说我已经掌握了那本书里面的内容&#xff0c;或者说1/5&#xff0c;没能力说也没有资格说。但是结果不重要&#xff0c;重要的是这个过程我的收获&#xff01;主要包括如下几个方面&#xff1a; 1、认识了…

华为OD机试 - 任务最优调度 - 深度优先搜索dfs算法(Java 2023 B卷 200分)

目录 专栏导读一、题目描述二、输入描述三、输出描述1、输入2、输出3、说明 四、解题思路1、题目解读2、解题思路3、具体步骤 五、Java算法源码六、效果展示1、输入2、输出3、说明思路分析执行顺序 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收…

Vue3+Ts项目(Naive UI组件)——创建有图标可伸缩的左边菜单栏

文章目录 安装、配置vue-router1、安装2、main.ts配置3、在App.vue中&#xff0c;渲染路由配置到的组件 创建测试路径页面1、src\views\dashboard\index.vue2、src\views\dashboard\test.vue3、src\views\table\index.vue 配置页面路由1、src\router\modules\dashboard.ts2、sr…

Java-----链表

本篇碎碎念&#xff1a;唐朝诡事录中的西安与洛阳让我想到了&#xff0c;远赴人间惊鸿宴会&#xff0c;一睹人间盛世颜&#xff0c;描绘的就是这两个古都吧&#xff0c;有机会一定要去游览一番 今日份励志文案: 最好的状态就是向自己喜欢的东西一点点靠近 …

基于SSM的OA办公系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

在线免费压缩pdf文件

在线免费压缩pdf文件&#xff0c;不用登陆哦&#xff0c; https://www.ilovepdf.com/ https://online2pdf.com/#

IPIDEA科普大数据企业怎样使用IP代理工具进行数据抓取

相信有很多的朋友都很好奇一件事&#xff0c;一般大数据企业需要拥有海量的数据才能够进行数据分析整理和利用&#xff0c;那么他们都是如何抓取到这么多的数据呢&#xff1f;这些企业在抓取数据时都会使用什么工具&#xff0c;今天就跟大家科普一下。 其实大数据企业在进行数…

uniapp x 相比于其他的开发系统框架怎么样?

首先我们要知道niapp这是一种基于Vue.js开发的跨平台应用框架&#xff0c;可以将同一套代码同时运行在多个平台上&#xff0c;包括iOS、Android、H5等。相比其他开发系统框架&#xff0c;他有什么优点呢&#xff1f;让我们共同探讨一下吧&#xff01; 图片来源&#xff1a;unia…