看书标记【R语言数据分析与挖掘实战】7

第七章 航空公司客户价值分析

7.1 背景与挖掘目标

客户关系管理的关键问题是客户分类,将有限营销资源集中于高价值客户,实现企业利润最大化目标,实现目标:
1)借助航空公司客户数据,对客户进行分类;
2)对不同的客户类别进行特征分析,比较不同类客户的客户价值;
3)对不同价值的客户类别提供个性化服务,制定相应的营销策略。

7.2 分析方法与过程

目标是客户价值识别与分析,结合数据字段的解释和RFM(R近度、F频度、M额度)模型,在此处扩展为LRFMC模型(增加了入会时间和折扣系数平均值),主要步骤有:数据抽取>数据探索分析>数据预处理>模型构建。

数据探索分析和数据预处理

# 设置工作空间
# 把“数据及程序”文件夹拷贝到F盘下,再用setwd设置工作空间
setwd("F:/数据及程序/chapter7/示例程序")
# 数据读取
datafile <- read.csv('./data/air_data.csv', header = TRUE)
# 确定要探索分析的变量
col <- c(15:18, 20:29)  # 去掉日期型变量
# 输出变量最值、缺失情况
summary(datafile[, col])
##数据预处理
# 设置工作空间
# 把“数据及程序”文件夹拷贝到F盘下,再用setwd设置工作空间
setwd("F:/数据及程序/chapter7/示例程序")
# 数据读取
datafile <- read.csv('./data/air_data.csv', header = TRUE)

# 丢弃票价为空的记录
delet_na <- datafile[-which(is.na(datafile$SUM_YR_1) |
                             is.na(datafile$SUM_YR_2)), ]

# 丢弃票价为0、平均折扣率不为0、总飞行公里数大于0的记录
index <- ((delet_na$SUM_YR_1 == 0 & delet_na$SUM_YR_2 == 0)
          * (delet_na$avg_discount != 0)
          * (delet_na$SEG_KM_SUM > 0))
deletdata <- delet_na[-which(index == 1), ]

# 保存清洗后的数据
cleanedfile <- deletdata
####根据分析模型LRFMC对变量属性进行规约,获得6个属性,其中两个变量用于计算入会时间集合,然后对数据集进行标准化转换。
# 设置工作空间
# 把“数据及程序”文件夹拷贝到F盘下,再用setwd设置工作空间
setwd("F:/数据及程序/chapter7/示例程序")
# 数据读取
datafile <- read.csv('./data/zscoredata.csv', header = TRUE)
# 数据标准化
zscoredfile <- scale(datafile)
# 数据写出
write.csv(zscoredfile, './tmp/zscoreddata.csv', row.names = F)

模型构建
首先,依据已经整理好的五个指标,对客户做聚类分群。

# 设置工作空间
# 把“数据及程序”文件夹拷贝到F盘下,再用setwd设置工作空间
setwd("F:/数据及程序/chapter7/示例程序")
# 数据读取
inputfile <- read.csv('./data/zscoreddata.csv', header = TRUE)
# 聚类分析
result <- kmeans(inputfile, 5)
# 结果输出
type <- result$cluster
table(type)  # 查看类别分布
centervec <- result$center

然后,结合业务对每个客户群进行特征分析,分析客户价值,并对每个客户群进行排名。

# 设置工作空间
# 把“数据及程序”文件夹拷贝到F盘下,再用setwd设置工作空间
setwd("F:/数据及程序/chapter7/示例程序")
# 数据读取
inputfile <- read.csv('./data/zscoreddata.csv', header = TRUE)

# 聚类分析,聚成5类,结合业务或者碎石图
result <- kmeans(inputfile, 5)

# 结果输出
type <- result$cluster
table(type)  # 查看类别分布,type对应每个样本的类别号,centervec为聚类中心向量
centervec <- result$center
##再根据各指标聚类中心向量画一个雷达图分析LRFMC模型
#以 客户群1 为例
##|  | ZL | ZR | ZF | ZM | ZC |
##|MAX|X|X|X|X|X|
##|MIN|X|X|X|X|X|
##|group1|X|X|X|X|X|
##|group2|X|X|X|X|X|
library(fmsb)
student1_data <- df[c("Max", "Min", "group.1"), ]
radarchart(student1_data)

模型可以应用到会员的升级与保级、首次兑换激活、交叉销售。

# 各簇中心的条形图
# install.packages("reshape")
# install.packages("ggplot2")
library(reshape)
library(ggplot2)
# 条形图
# 将数据格式转换为画图所需要的格式
data.bar <- as.data.frame(t(result$center))
colnames(data.bar) <- paste("class", 1:5, sep = "")
data.bar <- data.frame(index = c("L", "R", "F", "M", "C"), data.bar)
data.bar <- melt(data.bar, c("index"))
colnames(data.bar) <- c("index", "class", "center")
head(data.bar)
ggplot(data.bar, aes(x = index, y = center, fill = class)) + 
  scale_y_continuous(limits = c(-1, 3)) + geom_bar(stat = "identity") + 
  facet_grid(class ~ .) + guides(fill = FALSE) + theme_bw()
# 每一簇各指标的关系程度  --雷达图
# install.packages("fmsb")
library(fmsb)
max <- apply(result$centers, 2, max)
min <- apply(result$centers, 2, min)
data.radar <- data.frame(rbind(max, min, result$centers))
radarchart(data.radar, pty = 32, plty = 1, plwd = 2, vlcex = 0.7)
# 给雷达图加图例
L <- 1.2
for(i in 1:5){
  text(1.8, L, labels = paste("--class", i), col = i)
  L <- L - 0.2
}
# 查看各簇个数占比 --饼图
# install.packages("plotrix")
library(plotrix)
data.pie <- c(result$size)
prob <- paste(round(result$size / sum(result$size) * 100, 2), "%", sep = "")
lbls <- c(paste("class", 1:k, sep = "", ": ", prob))
pie3D(data.pie, labels = lbls, labelcex = 0.8, explode = 0.1,
      col = c("lightskyblue", "lightcyan", "turquoise",
                "lightskyblue3", "steelblue"))

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值