数据挖掘:航空公司的客户价值分析

需求分析

理解并掌握聚类分析方法,掌握数据的标准化,掌握寻找最佳聚类数,掌握聚类的绘图,掌握聚类分析的应用场景。

系统实现

实验流程分析

  • 借助航空公司数据,对客户进行分类
  • 对不同类别的客户进行特征分析,比较不同类别客户的价值
  • 对不同价值的客户类别进行个性化服务,制定相应的营销策略

数据准备

  • 加载本次实验所需要用到的包

打开spyder,输入以下代码

复制代码
import pandas as pd
import numpy as np
from sklearn.metrics import silhouette_score
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans,AgglomerativeClustering
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
import datetime
plt.rcParams['font.sans-serif']=['SimHei']  #中文正常显示
plt.rcParams['axes.unicode_minus']=False   #让负号正常显示
  • 读取数据,查看数据和整理数据信息

https:staticfile.eduplus.netldataSetsystemLiblc3b5c0f37fe24797808613bc713d5585.rar。压缩包中的数据为csv数据,解压并将该数据移动到c:/数据分析/data目录中

读取并查看数据

取出SUM_YR_1和SUM_YR_2不为空的样本

去除掉第一年、第二年票价均为0,同时平均折扣系数大于零和飞行里程大于零的数据

  • 取出LRFMC模型数据,并整理

取出LRFMC模型数据

计算入会天数

复制代码
L = pd.to_datetime(new_data['LOAD_TIME'])-pd.to_datetime(new_data['FFP_DATE'])
L = np.int64(L.astype(str).str.split().str[0])  # 会员入会天数          
L=pd.DataFrame(L,columns=['Days'])
air_features = pd.concat([L, new_data.iloc[:, 2:]], axis=1)   # 横向拼接
print(air_features.head())

更改列名,描述性统计

重置索引

数据标准化

寻找最佳聚类个数

  • 绘制拐点图,寻找下降最剧烈的点

    sse=[]
    for i in range(2,10):
    result=KMeans(i,random_state=100).fit(data_scale)
    sse.append(result.inertia_)
    plt.figure()
    plt.plot(range(2,10),sse,marker='o')
    plt.xlabel('k')
    plt.ylabel('sse')
    plt.show()

k=3/4时最激烈

  • 绘制轮廓系数图,寻找轮廓系数高的点

    sil=[]
    for i in range(2,8):
    result=KMeans(i,random_state=100).fit(data_scale)
    sil.append(silhouette_score(air_features,result.labels_))
    plt.figure()
    plt.plot(range(2,8),sil,marker='o')
    plt.xlabel('k')
    plt.ylabel('sil')
    plt.show()

k=2/3轮廓系数最高,综合k=3

建立聚类模型

  • 绘制聚类图,观察聚类情况

kmeans聚类

绘制聚类图

结果分析

  • 合并数据,并加入分类
  • 聚合各类,对各特征计算平均值
  • 加入客户分类并画图

    def customer_type(cluser):
    if cluser==0:
    return '重要发展客户'
    elif cluser==1:
    return '最重要客户'
    else:
    return '一般客户'

    air_features['客户类型']=air_features['cluster'].apply(customer_type)
    print(air_features.head())

绘制图像

复制代码
customer_count=air_features['客户类型'].value_counts()
plt.figure()
plt.subplot(1,2,1)
plt.bar(customer_count.index,customer_count.values)
#添加文本
for a,b in zip(customer_count.index,customer_count.values):
    plt.text(a,b,b,ha='center',va='bottom',color='b')
plt.subplot(1,2,2)
plt.pie(customer_count.values,labels=list(customer_count.index),autopct='%.1f%%', textprops={'color':'r'},shadow=True)
plt.legend(loc=1)
plt.show()
相关推荐
xiao5kou4chang6kai4几秒前
如何通过机器学习(如K-means、SVM、决策树)与深度学习(如CNN、LSTM)模型,进行全球气候变化驱动因素的数据分析与趋势预测
深度学习·机器学习·kmeans·生态环境监测·全球气候变化
诸葛务农5 分钟前
光刻胶性能核心参数:迪尔参数(A、B、C)
人工智能·材料工程
大千AI助手7 分钟前
Householder变换:线性代数中的镜像反射器
人工智能·线性代数·算法·决策树·机器学习·qr分解·householder算法
长颈鹿仙女12 分钟前
数学基础-线性代数(向量、矩阵、运算、范数、特征向量、特征值)
线性代数·机器学习·矩阵
world-wide-wait16 分钟前
机器学习03——matplotlib
python·机器学习·matplotlib
许泽宇的技术分享17 分钟前
当 AI Agent 遇上 MCP:微软 Agent Framework 的“瑞士军刀“式扩展之道
人工智能·microsoft
沉迷单车的追风少年19 分钟前
Diffusion Model与视频超分(2):解读字节开源视频增强模型SeedVR2
人工智能·深度学习·aigc·音视频·强化学习·视频生成·视频超分
Victory_orsh38 分钟前
“自然搞懂”深度学习系列(基于Pytorch架构)——03渐入佳境
人工智能·pytorch·深度学习
Fuly10241 小时前
AI 大模型应用中的图像,视频,音频的处理
人工智能·音视频
掘金安东尼1 小时前
Cursor 2.0 转向多智能体 AI 编程,并发布 Composer 模型
人工智能