赞
踩
使用教材:《Python数据分析与挖掘实战》
模型:RFM模型
算法:K-means聚类;其他方法还用到了层次聚类
数据:需要数据的可以评论里call。
内容:
(1)案例: 航空公司客户价值分析
(2)基于RFM客户价值理论的特征提取, 聚类结果解释
作业:
(1)使用教材 §7 航空公司客户价值聚类分析配套示例数据和代码,掌握其特征构造操作过程
(2)考虑:使用其它模型参数, 聚类算法, 并观察结果;利用数据探索分析结果, 提取有用的变量/特征, 进行聚类分析, 观察结果
企业在面向客户制定运营和营销策略,需要因人而异,给出最佳方案。因此企业的核心问题之一是客户关系管理。某航空公司正面临着:常旅客六十、竞争力下降、航空资源未得到充分利用的经营危机,建立客户价值评估模型亟待解决。
2.1 对客户进行分类,比较不同客户群体的价值,制定相应的营销策略。
2.2 对不同的客户进行特征分析,比较不同类别客户的价值。
2.3 针对不同价值的客户类别制定相应的营销策略,提供个性化服务。
通过观察原始数据,发现存在票价为空值的记录,存在票价最小值为0、折扣率最小值为0但总飞行公里数大于0的记录。
查找每列属性观测值中空值个数、最大值、最小值。
#-*- coding: utf-8 -*- # 对数据进行基本的探索 # 返回缺失值个数以及最大最小值 import pandas as pd datafile= r'C:/Users/lenovo/Documents/MEGA/Data Mining School/第2版CodeData/chapter7/demo/data/air_data.csv' # 航空原始数据,第一行为属性标签 resultfile = r'C:/Users/lenovo/Documents/MEGA/Data Mining School/第2版CodeData/chapter7/demo//tmp/explore.csv' # 数据探索结果表 # 读取原始数据,指定UTF-8编码(需要用文本编辑器将数据装换为UTF-8编码) data = pd.read_csv(datafile, encoding = 'utf-8') # 包括对数据的基本描述,percentiles参数是指定计算多少的分位数表(如1/4分位数、中位数等) explore = data.describe(percentiles = [], include = 'all').T # T是转置,转置后更方便查阅 explore['null'] = len(data)-explore['count'] # describe()函数自动计算非空值数,需要手动计算空值数 explore = explore[['null', 'max', 'min']] explore.columns = [u'空值数', u'最大值', u'最小值'] # 表头重命名 ''' 这里只选取部分探索结果。 describe()函数自动计算的字段有count(非空值数)、unique(唯一值数)、top(频数最高者)、 freq(最高频数)、mean(平均值)、std(方差)、min(最小值)、50%(中位数)、max(最大值) ''' explore.to_csv(resultfile) # 导出结果
explore.head()
分别从客户基本信息、乘机信息、积分信息3个角度进行数据探索,寻找客户信息的分布规律。
选取客户基本信息中的入会时间、性别、会员卡级别和年龄字段进行探索分析,探索客户的基本信息分布情况。
#-*- coding: utf-8 -*- # 代码7-2 # 对数据的分布分析 import pandas as pd import matplotlib.pyplot as plt datafile= r'C:/Users/lenovo/Documents/MEGA/Data Mining School/第2版CodeData/chapter7/demo/data/air_data.csv' # 航空原始数据,第一行为属性标签 # 读取原始数据,指定UTF-8编码(需要用文本编辑器将数据装换为UTF-8编码) data = pd.read_csv(datafile, encoding = 'utf-8') # 客户信息类别 # 提取会员入会年份 from datetime import datetime ffp = data['FFP_DATE'].apply(lambda x:datetime.strptime(x,'%Y/%m/%d')) ffp_year = ffp.map(lambda x : x.year)
# 绘制各年份会员入会人数直方图
fig = plt.figure(figsize = (8 ,5)) # 设置画布大小
plt.rcParams['font.sans-serif'] = 'SimHei' # 设置中文显示
plt.rcParams['axes.unicode_minus'] = False
plt.hist(ffp_year, bins='auto', color='#0504aa')
plt.xlabel('年份')
plt.ylabel('入会人数')
plt.title('各年份会员入会人数')
plt.show()
plt.close
# 提取会员不同性别人数
male = pd.value_counts(data['GENDER'])['男']
female = pd.value_counts(data['GENDER'])['女']
# 绘制会员性别比例饼图
fig = plt.figure(figsize = (7 ,4)) # 设置画布大小
plt.pie([ male, female], labels=['男','女'], colors=['lightskyblue', 'lightcoral'],
autopct='%1.1f%%')
plt.title('会员性别比例')
plt.show()
plt.close
# 提取不同级别会员的人数
lv_four = pd.value_counts(data['FFP_TIER'])[4]
lv_five = pd.value_counts(data['FFP_TIER'])[5]
lv_six = pd.value_counts(data['FFP_TIER'])[6]
# 绘制会员各级别人数条形图
fig = plt.figure(figsize = (8 ,5)) # 设置画布大小
plt.bar(x=range(3), height=[lv_four,lv_five,lv_six], width=0.4, alpha=0.8
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。