基于LRFMC+KMeans航空大数据客户价值分析

**

基于LRFMC+KMeans航空大数据客户价值分析

**
(客户是公司存在的意义根本,如何找出价值客户, 针对性提供更个性化的服务?
公司资源是有限的,如何把有限的资源用在高价值的客户上?怎么才算有价值?产品面要大,客户人群才广,同时分类营销,分类服务)所以客户分类是企业数据分析的核心任务。。
吸引一般客户–培养一般客户–价值客户–vip客户
LRFMC模型:航空领域做价值分析的模型
KMeans方法:实现聚类的机器学习方法
背景:
通过某航空公司多年的客户信息历史数据(6万余条),将客户进行分类。
分为:价值客户(优质服务)、保持客户(服务+价格)、发展客户(价格)、挽留客户
根据分类制定不同的销售策略。

目标:
1. 完成历史样本数据的预处理,便于适合后续算法模型使用
2. 算法模型的选型、训练、智能分类的实现
3. 根据分类的客户群,制定不同的销售策略

工作流程:
一、行业背景知识
1. 了解行业背景知识—基础
2. 掌握行业专业术语
3. 对历史数据文件进行初步探索分析

二、领域标准分析模型
4. 了解行业客户价值分析通用模型 RFM
5. 了解航空领域专业客户价值分析模型 LRFMC

三、科学计算与数据分析(本阶段项目任务)
6. 抽取数据
7. 数据探索分析
8. 数据预处理
8.1 数据清洗
8.2 属性规约
8.3 数据变换

四、人工智能算法模型训练(下阶段人工智能项目任务,非本阶段项目任务)
9. 构建算法模型K-Means
10. 算法模型训练
11. 实现历史客户分类

五、根据结论得出最终结果
12. 客户群数据特征分析可视化
13. 客户群特征描述

需要了解行业,没有行业知识无从下手

专业航空领域的数据模型
kmeans是实现手段
1.1 需求背景
信息时代的来临是的企业营销焦点从产品中心转变为客户中心,客户关系管理成为企业的核心问题。客户关系管理的关键问题是客户分类,通过客户分类,区分无价值客户、高价值客户,企业针对不同价值的客户指定优化的个性化服务,采取不同营销策略,将优先营销资源集中与高价值客户,实现企业利润最大化目标。准确的客户分类结果是企业精准营销的最重要参考依据。有限的资源需要花在刀刃上。

面对市场竞争,各个航空该公司都推出了更优惠的营销方式来吸引更多的客户,国内能够航空公司面临着旅客流失、竞争力下降和航空资源未充分利用等经营危机。通过建立合理的客户价值评估模型、对客户进行分群,分析比较不同客户群的客户价值,并制定相应的营销策略,对不同的客户群提供个性化的客户服务是必须和有效的。目前该航空公司已积累了大量的会员档案信息和其乘坐航班的记录。经过加工后得到表1所示的部分数据信息。
优质客户优质服务,要做精准营销,高价值客户是利润增长点。有限的
FIRST_FLIGHT_DATE 62988 non-null object
GENDER 62985 non-null object
FFP_TIER 62988 non-null int64
WORK_CITY 60719 non-null object
WORK_PROVINCE 59740 non-null object
WORK_COUNTRY 62962 non-null object
AGE 62568 non-null float64
LOAD_TIME 62988 non-nul
其中很多不满62988条数据的字段,不重要不需要管他。我们根据我们的模型就处理我们关注的字段即可。

data_clean.py 数据清洗

目标:清洗不满足条件的原始数据,并将最终结果保存成excel文件

步骤1:导入pandas模块

import pandas as pd,import os

步骤2:设置原始数据文件的地址

csvFile = os.getcwd() + ‘\data’ + os.sep + ‘air_data.csv’

csvFile = ‘./data/air_data.csv’

步骤3:使用pd.read_csv()函数读取数据

data = pd.read_csv(csvFile, encoding=’utf-8’)

步骤4:输出前5条测试片段数据

print(data.head())

步骤5:输出数据的统计信息

print(data.info()) #62988条记录 全部记录

步骤6:设置初步筛选的条件

condition = data[‘SUM_YR_1’].notnull() & data[‘SUM_YR_2’].notnull()

步骤7:初步删选原始数据,将第1年飞行累计和第2年飞行累计进行筛选过滤

data = data[condition]

print(data) #运行后62299 比上一次62988少

步骤8:设置数据过滤的条件

condition1 = data[‘SUM_YR_1’] != 0 #第一年总票价不等于0 :SUM_YR_1
condition2 = data[‘SUM_YR_2’] != 0 #第二年总票价不等于0:SUM_YR_2
condition3 = (data[‘SEG_KM_SUM’] != 0) & (data[‘avg_discount’] != 0)#总飞行公里数 SEG_KM_SUM 平均折扣率 avg_discount

步骤9:根据过滤条件筛选数据

data = data[condition1 | condition2 | condition3]

print(‘\n 筛选之后的数据’)

print(data) #运行后62292比上一次少7行

步骤10:设置excel文件的保存存储路径

excelPath = os.getcwd() + ‘\out’ + os.sep + ‘cleaned.xls’
print(excelPath)

步骤11:将最终的数据探索结果保存到一个excel的中间文件中cleaned.xls

data.to_excel(excelPath)
print(‘>>数据清洗结束,并保存结果数据文件.’) #运行后,cleaned.xls文件出现

累计62292条数据 第一行是目录

data_explore.py数据探索

目标:通过对历史数据aire_data.csv的分析,得到所有44个数据属性的空值个数、最小值以及最大值三个数据指标

步骤1:导入pandas模块

import pandas as pd,import os

步骤2:设置原始数据文件的地址

csvFile = os.getcwd() + ‘\data’ + os.sep + ‘air_data.csv’

步骤3:使用pd.read_csv()函数读取数据

data = pd.read_csv(csvFile, encoding=’utf-8’)

步骤4:输出前5条测试片段数据

print(data.head())

步骤5:输出数据的统计信息

print(data.info())

步骤6:获取数据中的空值项———–

Pandas模块库中 describe( ) 函数获取数据并转置。percentiles参数是指计算多少的分位数表—–(如1/4分位数、中位数等);

自动计算非空值数据,???–就是把空值补为nan标志。T 是转置,转之后的数据方便我们后续查阅及使用。

explore = data.describe(percentiles=[], include=’all’).T #主要目的:填空值为nan,且转置

print(‘设置数据中的空值项统计:’)

print(explore)

步骤7:计算每个属性的空值个数

explore[‘null’] = len(data) - explore[‘count’]

print(‘每个属性的空值个数:’)

print(explore[‘null’]) #SUM_YR_1 551 SUM_YR_2 138

步骤8:抽取数据中的空值个数null、最大值max、最小值min三个数据属性(数据选项) ?????????

explore = explore[[‘null’, ‘max’, ‘min’]]

步骤9:重置列索引名称

explore.columns = [‘空值数’, ‘最大值’, ‘最小值’]
print(‘\n数据探索整理之后的数据结果:’)
print(explore)

步骤10:设置excel文件的保存存储路径

excelPath = os.getcwd() + ‘\out’ + os.sep + ‘explore.xls’

步骤11:将最终的数据探索结果保存到一个excel的中间文件中explore.xls

explore.to_excel(excelPath)
print(‘>>数据探索结束,并保存结果数据文件.’) #生成文件explore.py 10kb


data_reduction.py数据规约(挑选需要的数据属性)与转换
目标:根据LRFMC模型从原始数据中选取指定的属性数据项

步骤1:导入pandas模块

import pandas as pd;import os

步骤2:设置原始清洗后的数据文件的地址

excelFile = os.getcwd() + ‘\out’ + os.sep + ‘cleaned.xls’

步骤3:使用pd.ExcelFile()函数读取excel文件 之前read csv能读几种文件??

ef = pd.ExcelFile(excelFile, encoding=’utf-8’)

步骤4:读取到有效Sheet页数据并转换成DataFrame对象

data = ef.parse(‘Sheet1’)
print(data.head())# 步骤4:输出前5条测试片段数据
print(data.info())# 步骤5:输出数据的统计信息

步骤6:筛选出核心的6个数据属性

data = data[[‘FFP_DATE’, ‘LOAD_TIME’, ‘FLIGHT_COUNT’, ‘avg_discount’, ‘SEG_KM_SUM’, ‘LAST_TO_END’]]

print(data.info()) # 运行以后[62292 rows x 6 columns] # print(data)

# 步骤7:获取L属性的数据 同时给上索引 L R F M C 对吧——–???

data[‘L’] = (pd.to_datetime(data[‘LOAD_TIME’]) - pd.to_datetime(data[‘FFP_DATE’]))/30

to_datetime 得到的是天数

data[‘R’] = data[‘LAST_TO_END’]/30
data[‘F’] = data[‘FLIGHT_COUNT’]
data[‘M’] = data[‘SEG_KM_SUM’]
data[‘C’] = data[‘avg_discount’]

print(data[[‘L’, ‘R’, ‘F’, ‘M’, ‘C’]]) #运行以后 [62292 rows x 5 columns]

步骤8:设置excel文件的保存存储路径

excelPath = os.getcwd() + ‘\out’ + os.sep + ‘reduction.xls’

步骤11:将最终的数据探索结果保存到一个excel的中间文件中explore.xls

data.to_excel(excelPath)
print(‘>>数据规约、变换,并保存结果数据文件.’)
个指标的数据提取后,对每个指标数据分布情况进行分析,其数据的取值范围见表7。

表7:LRFMC指标取值范围
属性名称 L R F M C
最小值 12.23 0.03 2 368 0.14
最大值 114.63 24.37 213 580 717 1.5
从表7中数据可以发现,5个指标的取值范围数据差异较大,为了消除数量级数据带来的影响,需要对数据进行标准化处理。
标准差标准化处理的Python代码清单如下所示,datafile 为输入数据文件,zscoredata为标准差标准化后的数据集。
data_std.py数据标准化计算

目标:获取到最终的标准数据样本

步骤1:导入pandas模块

import pandas as pd;import os

步骤2:设置原始清洗后的数据文件的地址

excelFile = os.getcwd() + ‘\data’ + os.sep + ‘zscoredata.xls’

步骤3:使用pd.ExcelFile()函数读取数据

ef = pd.ExcelFile(excelFile, encoding=’utf-8’)

步骤4:读取到有效Sheet页数据并转换成DataFrame对象

data = ef.parse(‘Sheet1’)

步骤4:输出前5条测试片段数据

print(data.head())

步骤5:输出数据的统计信息

print(data.info())

步骤6:对数据进行标准化计算 每项数据减去数据(axis=0)平均值

后除以数据(axis=0)的标准差值(—-???)std(axis=0)。

标准pian差:标准差(Standard Deviation)又称均方差,是离均差平方的算术平均数的平方根,用σ表示。

标准差是方差的算术平方根。标准差能反映一个数据集的离散程度。一个较大的标准差,代表大部分数值和

其平均值之间差异较大;一个较小的标准差,代表这些数值较接近平均值。

data = (data - data.mean(axis=0))/(data.std(axis=0))
print(‘\n标准化计算后的数据:’)
print(data)

步骤8:设置excel文件的保存存储路径

excelPath = os.getcwd() + ‘\out’ + os.sep + ‘zscoredata.xls’

步骤9:重新设置数据列索引名称

data.columns = [‘Z’+i for i in data.columns]

步骤10:将最终的数据探索结果保存到一个excel的中间文件中zscoredata.xls

data.to_excel(excelPath, index=False)
print(‘>>数据标准化完毕,并保存结果数据文件.’)
zscoredata.xls 6.7m文件形成 ,看下图 项目就结束了

这里写图片描述

  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值