一、实验目的
1)了解K-Means 聚类算法在客户价值分析实例中的应用。
2)利用pandas快速实现数据z-score(标准差)标准化以及用scikit-learn 的聚类库实现K-Means聚类。
二、实验环境
python
三、实验内容
本上机实验的内容包括以下两个方面:
依据航空公司客户价值分析的 LRFMC模型提取客户信息的 LRF"MC指标。对其进行标准差标准化并保存后,采用K-Means算法完成客户的聚类,分析每类客户的特征,从而获得每类客户的价值。
1)利用pandas库读入 LRFMC 指物文件,分别计算各个指标的均值与其标准差,使用标准差标准化公式完成LRFMC 指标的标准化,并将标准化后的数据进行保存。
2)编写 Python程序,完成客户的K-Means聚类,获得聚类中心与类标号。输出聚类中心的特征图,并统计每个类别的客户数。
四、方案设计
4.1总体设计和实现的思路:
将客户关系长度L、消费时间间隔R、消费频率F、飞行里程M和折扣系数的平均值C五个指标作为航空公司识别客户价值指标,记为LRFMC模型。通过LRFMC模型的五个指标进行KMeans聚类,识别出最有价值客户。
航空公司客户数据挖掘主要包括以下步骤:
(1)从航空公司的数据源中进行选择性抽取与新增数据抽取分别形成历史数据和增量数据。
(2)对步骤(1)中形成的两个数据集进行数据探索性分析与预处理,包括数据缺失值与异常值的探索分析,数据的属性规约、清洗和变换。
(3)利用步骤(2)中形成的已完成数据预处理的建模数据,基于旅客价值LRFMC模型进行客户分群,对各个客户群进行特征分析,识别出有价值的客户。
(4)针对模型结果得到不同价值的客户,采用不同的营销手段,提供定制化的服务。
(5)对客户进行流失分析,对流失客户和准流失客户进行用户画像。
4.2实验步骤:
数据探索分析
对数据进行缺失值与异常值分析,分析出数据的规律以及异常值。查找出每列属性观测值中的空值个数、最大值、平均值、最小值。
import pandas as pd
datafile = 'C:/Users/86199/Desktop/air_data.csv' # 把air_data.csv 文件拖到桌面就行
resultfile = 'C:/Users/86199/Desktop/explore.csv' # 什么都不用做,会在桌面生成报告,下面会用到
data = pd.read_csv(datafile, encoding='utf-8')
explore = data.describe().T
explore = explore[[ 'mean', 'std']]
explore.columns = [ '平均值', '方差']
explore.to_csv(resultfile)
explore.sort_values('方差', ascending=False)
数据清洗
通过数据探索分析,发现数据中存在缺失值,票价最小值为0的记录。由于原始数据量大,这类数据所占的比例较小,对于问题影响不大,因此对其进行丢弃处理。具体处理方法如下:
(1)丢弃票价为空的记录;
(2)丢弃票价为0的记录。
datafile = 'C:/Users/86199/Desktop/air_data.csv'
cleanedfile = 'C:/Users/86199/Desktop/data_cleaned.csv' # 生成清理后的数据
# 去掉票价为空的数据
data = data[(data['SUM_YR_1'].notnull()) & (data['SUM_YR_2'].notnull())]
# 保留票价非0、平均折扣率与总飞行公里数同时为0的记录
criteria1 = data['SUM_YR_1'] != 0
criteria2 = data['SUM_YR_2'] != 0
data = data[criteria1 | criteria2]
data.to_csv(cleanedfile, index=False)
属性规约
原始数据中属性太多,根据航空公司价值LRFMC模型,选择与LRFMC指标相关的6个属性:FFP_DATE、LOAD_TIME、FLIGHT_COUNT、AVG_DISCOUNT、SEG_KM_SUM、LAST_TO_END,删除与其不相关的属性。
datafile = 'C:/Users/86199/Desktop/data_cleaned.csv'
data = pd.read_csv(datafile, encoding='utf-8')
data = data[['LOAD_TIME',