基于聚类算法完成航空公司客户价值分析任务

简介: 基于聚类算法完成航空公司客户价值分析任务

一、基于聚类算法完成航空公司客户价值分析任务

1、✌ 任务描述

1、借助航空公司数据,对客户进行分类

2、对不同类别的客户进行特征分析,比较不同类别客户的价值

3、对不同价值的客户进行个性化服务,指定相应的营销策略

2、✌ 数据集

其中数据中包括62988个客户样本,44种属性,数据下载地址

2.1 ✌ 数据集中字段含义

3、✌ 方法

基于聚类算法完成航空客户分析任务主要流程有:数据预处理、模型训练与对数据的预测、分析与决策。详细步骤见下图。

3.1 ✌ 数据预处理

首先导入一些所需模块

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime
import sklearn.preprocessing
import sklearn.cluster

读取数据,数据是以CSV文件的形式存储的,每行代表一个客户,每列代表一个属性字段。

air_data=pd.read_csv('air_data.csv')
air_data.shape

观察前5条数据

air_data.head(5)

展示每列数据的类型,object代表文本,int64代表整数,float64代表浮点数,bool类型代表布尔值

air_data.dtypes

观察每列数据的具体描述,只适用于数值型变量

air_data.describe().T

去除重复数据

air_data=air_data.drop_duplicates()

观察数据是否有缺失值

air_data.isnull().sum()

3.2 ✌ 特征工程
3.2.1 ✌ RFM模型

我们需要根据给定的44个属性来对客户价值进行价值分析,也就是对不同的客户进行分类,特别地,对于客户价值分析的一个经典模型是 RFM 模型。

  • Recency: 最近消费时间间隔。
  • Frequency: 客户消费频率。
  • Monetary Value: 客户总消费金额。
    使用 RFM 模型主要根据其中的RFM三个特征来对用户进行分析,将客户群体细分为重要保持客户、重要发展客户、重要挽留客户、一般客户、低价值客户五类。
3.2.2 ✌ 变体-LRFMC模型

考虑到商用航空行业与一般商业形态的不同,国内外航空公司在RFM模型的基础上,还加上了 L 客户关系时长以及 C 客户所享受的平均折扣率这两个特征用于客户分群与价值分析,得到航空行业的LRFMC模型:

  • Length of Relationship: 客户关系时长,反映可能的活跃时长。
  • Recency: 最近消费时间间隔,反映当前的活跃状态。
  • Frequency: 客户消费频率,反映客户的忠诚度。
  • Mileage: 客户总飞行里程,反映客户对乘机的依赖性。
  • Coefficient of Discount: 客户所享受的平均折扣率,侧面反映客户价值高低。
load_time = datetime.datetime.strptime('2014/03/31', '%Y/%m/%d')
ffp_dates = [datetime.datetime.strptime(ffp_date, '%Y/%m/%d') for ffp_date in air_data['FFP_DATE']]
length_of_relationship = [(load_time - ffp_date).days for ffp_date in ffp_dates]
air_data['LEN_REL'] = length_of_relationship

模型只需要这几列

features = ['LEN_REL','FLIGHT_COUNT','avg_discount','SEG_KM_SUM','LAST_TO_END']
data = air_data[features]
features = ['L','F','C','M','R']
data.columns = features

观察前5行数据

display(data.head())
display(data.describe().T)

3.2.3 ✌ 标准化

对特征进行标准化,是各列的均值为0、方差为1

data=(data.mean(axis=0))/(data.std(axis=0))
ss = sklearn.preprocessing.StandardScaler(with_mean=True, with_std=True)#标准化
data = ss.fit_transform(data) #数据转换
data = pd.DataFrame(data, columns=features)
data_db = data.copy()

3.3 ✌ 模型训练与对数据的预测

我们想要将将客户群体细分为重要保持客户、重要发展客户、重要挽留客户、一般客户、低价值客户五类,

于是我们可以用 k-means 聚类算法进行聚类,类别的数量可以人为控制。

前面我们已经通过数据处理得到了我们 LRFMC 模型需要的特征,接下来就使用 k-means 聚类算法来分析数据。

这里我们使用机器学习库 scikit-learn 中现有的 kmeans 函数的实现。

3.3.1 ✌ KMeans聚类算法

将目标样本分为5个群体

from sklearn.cluster import KMeans
data=KMeans(n_clusters=5).fit(data)

查看模型学习出来的5个群体中心,以及5个群体所包含的样本总数。

r1 = pd.Series(km.labels_).value_counts()
r2 = pd.DataFrame(km.cluster_centers_)
r = pd.concat([r2, r1], axis=1)
r.columns = list(data.columns) + ['counts']
r

查看每个样本预测的群体的标签

kms.labels_

3.4 ✌ 尝试使用RFM模型
data_rfm=data[['R','F','M']]
data_rfm.head()

kms.fit(data_rfm)
kms.labels_

r1 = pd.Series(km.labels_).value_counts()
r2 = pd.DataFrame(km.cluster_centers_)
rr = pd.concat([r2, r1], axis=1)
rr = pd.DataFrame(ss.fit_transform(rr) )
rr.columns = list(data_rfm.columns) + ['counts']
rr

3.5 ✌ DBSCAN模型对LCRFM特征进行计算

除了Kmeans聚类算法外,我们还可以使用DBSCAN等聚类算法进行建模。

from sklearn.cluster import DBSCAN
# db = DBSCAN(eps=10,min_samples=2).fit(data_db)
# Kagging debug
db = DBSCAN(eps=10,min_samples=2).fit(data_db.sample(10000))
DBSCAN_labels = db.labels_

3.9 ✌ 根据LCRFM结果进行分析

我们这里是对Kmeans算法使用LCRFM模型进行分析:

对应实际业务对聚类结果进行分值离散转化,对应1-5分,其中属性值越大,分数越高:

(1)✌ 重要保持客户

平均折扣率高(C↑),最近有乘机记录(R↓),乘机次数高(F↑)或里程高(M↑):

这类客户机票票价高,不在意机票折扣,经常乘机,是最理想的客户类型。

公司应优先将资源投放到他们身上,维持这类客户的忠诚度。

(2)✌ 重要发展客户

平均折扣率高(C↑),最近有乘机记录(R↓),乘机次数低(F↓)或里程低(M↓):

这类客户机票票价高,不在意机票折扣,最近有乘机记录,但总里程低,具有很大的发展潜力。

公司应加强这类客户的满意度,使他们逐渐成为忠诚客户。

(3)✌ 重要挽留客户

平均折扣率高(C↑),乘机次数高(F↑)或里程高(M↑),最近无乘机记录(R↑):

这类客户总里程高,但较长时间没有乘机,可能处于流失状态。

公司应加强与这类客户的互动,召回用户,延长客户的生命周期。

(4)✌ 一般客户

平均折扣率低(C↓),最近无乘机记录(R↑),乘机次数高(F↓)或里程高(M↓),入会时间短(L↓):

这类客户机票票价低,经常买折扣机票,最近无乘机记录,可能是趁着折扣而选择购买,对品牌无忠诚度。

公司需要在资源支持的情况下强化对这类客户的联系。

(5)✌ 低价值客户

平均折扣率低(C↓),最近无乘机记录(R↑),乘机次数高(F↓)或里程高(M↓),入会时间短(L↓):

这类客户与一般客户类似,机票票价低,经常买折扣机票,最近无乘机记录,可能是趁着折扣而选择购买,对品牌无忠诚度。

✌ 结果分析

  • 群体1的L属性最大
  • 群体2的L、C属性最小
  • 群体3的C属性上最大
  • 群体4的M、F属性属性最大,R属性最小
  • 群体5的R属性最大,F、M属性最小
  • 其中每项指标的实际业务意义为:
  • L:加入会员的时长。越大代表会员资历越久
  • R:最近一次乘机时间。越大代表越久没乘机
  • F:乘机次数。越大代表乘机次数越多
  • M:飞行总里程。越大代表总里程越多
  • C:平均折扣率。越大代表折扣越弱,0表示0折免费机票,10代表无折机票
  • 重要保持客户:客户群4
  • 重要发展客户:客户群3
  • 重要挽留客户:客户群1
  • 一般客户:客户群2
  • 低价值客户:客户群5

✌ 决策

重要发展客户、重要保持客户、重要挽留客户这三类客户其实也对应着客户生命周期中的发展期、稳定器、衰退期三个时期。从客户生命周期的角度讲,也应重点投入资源召回衰退期的客户。

一般而言,数据分析最终的目的是针对分析结果提出并开展一系列的运营/营销策略,以期帮助企业发展。在本实例中,运营策略有三个方向:

提高活跃度:提高一般客户、低价值客户的活跃度。将其转化为优质客户

提高留存率:与重要挽留客户互动,提高这部分用户的留存率

提高付费率:维系重要保持客户、重要发展客户的忠诚度,保持企业良好收入

每个方向对应不同的策略,如会员升级、积分兑换、交叉销售、发放折扣券等手段,此处不再展开。


目录
相关文章
|
2月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
162 4
|
18天前
|
存储 算法 安全
基于哈希表的文件共享平台 C++ 算法实现与分析
在数字化时代,文件共享平台不可或缺。本文探讨哈希表在文件共享中的应用,包括原理、优势及C++实现。哈希表通过键值对快速访问文件元数据(如文件名、大小、位置等),查找时间复杂度为O(1),显著提升查找速度和用户体验。代码示例展示了文件上传和搜索功能,实际应用中需解决哈希冲突、动态扩容和线程安全等问题,以优化性能。
|
27天前
|
缓存 算法 搜索推荐
Java中的算法优化与复杂度分析
在Java开发中,理解和优化算法的时间复杂度和空间复杂度是提升程序性能的关键。通过合理选择数据结构、避免重复计算、应用分治法等策略,可以显著提高算法效率。在实际开发中,应该根据具体需求和场景,选择合适的优化方法,从而编写出高效、可靠的代码。
35 6
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
81 1
|
2月前
|
算法 数据挖掘 数据安全/隐私保护
基于FCM模糊聚类算法的图像分割matlab仿真
本项目展示了基于模糊C均值(FCM)算法的图像分割技术。算法运行效果良好,无水印。使用MATLAB 2022a开发,提供完整代码及中文注释,附带操作步骤视频。FCM算法通过隶属度矩阵和聚类中心矩阵实现图像分割,适用于灰度和彩色图像,广泛应用于医学影像、遥感图像等领域。
|
3月前
|
并行计算 算法 IDE
【灵码助力Cuda算法分析】分析共享内存的矩阵乘法优化
本文介绍了如何利用通义灵码在Visual Studio 2022中对基于CUDA的共享内存矩阵乘法优化代码进行深入分析。文章从整体程序结构入手,逐步深入到线程调度、矩阵分块、循环展开等关键细节,最后通过带入具体值的方式进一步解析复杂循环逻辑,展示了通义灵码在辅助理解和优化CUDA编程中的强大功能。
|
4天前
|
算法 数据安全/隐私保护 计算机视觉
基于Retinex算法的图像去雾matlab仿真
本项目展示了基于Retinex算法的图像去雾技术。完整程序运行效果无水印,使用Matlab2022a开发。核心代码包含详细中文注释和操作步骤视频。Retinex理论由Edwin Land提出,旨在分离图像的光照和反射分量,增强图像对比度、颜色和细节,尤其在雾天条件下表现优异,有效解决图像去雾问题。
|
4天前
|
算法 数据可视化 安全
基于DWA优化算法的机器人路径规划matlab仿真
本项目基于DWA优化算法实现机器人路径规划的MATLAB仿真,适用于动态环境下的自主导航。使用MATLAB2022A版本运行,展示路径规划和预测结果。核心代码通过散点图和轨迹图可视化路径点及预测路径。DWA算法通过定义速度空间、采样候选动作并评估其优劣(目标方向性、障碍物距离、速度一致性),实时调整机器人运动参数,确保安全避障并接近目标。
|
14天前
|
算法 数据安全/隐私保护
室内障碍物射线追踪算法matlab模拟仿真
### 简介 本项目展示了室内障碍物射线追踪算法在无线通信中的应用。通过Matlab 2022a实现,包含完整程序运行效果(无水印),支持增加发射点和室内墙壁设置。核心代码配有详细中文注释及操作视频。该算法基于几何光学原理,模拟信号在复杂室内环境中的传播路径与强度,涵盖场景建模、射线发射、传播及接收点场强计算等步骤,为无线网络规划提供重要依据。
|
15天前
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a实现时间序列预测,采用CNN-GRU-SAM网络结构。卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征。完整代码含中文注释和操作视频,运行效果无水印展示。算法通过数据归一化、种群初始化、适应度计算、个体更新等步骤优化网络参数,最终输出预测结果。适用于金融市场、气象预报等领域。
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真

热门文章

最新文章