• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

利用R语言中的KMEANS算法对业务中各类客户进行分析

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

利用R语言中的KMEANS算法对业务中各类客户进行分析

第一步,数据导入

setwd("C:\\Users\\admin\\Desktop\\R_sv")
datafile=read.csv("air_data.csv",header = T)

导入之后我们先通过summary函数来查看一下各变量的统计量。
发现其中部分数据存在缺失值,那么我们首先对缺失值进行处理。

第二步,数据清洗
缺失值的处理,去掉所有第一年和第二年票价为缺失值的所有行

delet_na<-datafile[-which(is.na(datafile$SUM_YR_1)| is.na(datafile$SUM_YR_2)),]
index<-(delet_na$SUM_YR_1==0&delet_na$SUM_YR_2==0)*(delet_na$avg_discount!=0) 
#返回0或者1
deletdata<-delet_na[-which(index==1),]                        

处理掉无价值客户的数据(票价为0,折扣不为0)

这里需要对我们要分析的数据属性做一个归类。样本数据来自某家航空公司,我们需要分析哪些客户需要保留,哪些值得开发,等等。
因此我们通过业务方面分析,从第一张图中属性选出以下五种:
L:入会时长
R:飞行次数
F:里程数
M:飞行里程
C:折扣系数
下面定义一个向量,其中的元素都是和所选元素相关的

vars<-c("FFP_DATE","LOAD_TIME","LAST_FLIGHT_DATE",
        "FLIGHT_COUNT","SEG_KM_SUM","avg_discount")

之后,我们的目标就是去掉和这些指标无关的数据:

gy<-deletdata[,vars]
gy$FFP_DATE<-as.Date(gy$FFP_DATE)
gy$LOAD_TIME<-as.Date(gy$LOAD_TIME)
gy$LAST_FLIGHT_DATE<-as.Date(gy$LAST_FLIGHT_DATE)
#用transform为gy添加新的变量L和R,并赋值给新的变量bh
bh<-transform(gy,L=difftime(LOAD_TIME,FFP_DATE,units="days")/30,
              R=difftime(LOAD_TIME,LAST_FLIGHT_DATE,units="days")/30)
bh$L<-as.numeric(bh$L)
bh$R<-as.numeric(bh$R)
bh<-bh[-which(is.na(bh$LAST_FLIGHT_DATE)),]
#筛选出所选5个指标的数据
yt<-bh[,c("L","R","FLIGHT_COUNT","SEG_KM_SUM","avg_discount")]

对筛选完的数据进行标准化

bzh<-data.frame(scale(yt))
names(bzh)<-c("L","R","F","M","C")

第三步、建模
这里直接通过R中的kmeans对标准化后的数据进行聚类。

set.seed(10)                  
clust<-kmeans(bzh,centers=5)  
centers<-clust$centers #查看类中心
table(clust$cluster)

第四步、作图(雷达图)
用fmsb包制作雷达图,通过for循环为每个类设置标签

library(fmsb)
max<-apply(centers,2,max)
min<-apply(centers,2,min)
#合并行max,min,类中心
data.radar<-data.frame(rbind(max,min,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
}

最后得到图片:

最后我们只需要通过自己的业务知识,对分类后的数据进行分析即可。

小结: 通过以上整套流程的分析,我明白了数据分析最重要,最复杂的一步其实是数据处理和清洗,否则后面模型哪怕建的再好,效果也不会好。这就和做菜类似。买菜,洗菜很重要,否则厨艺再高的人,面对烂菜也会无济于事。

本次分析是我的第一次尝试,希望大家多多支持,谢谢!


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
R语言rank函数详细解析发布时间:2022-07-18
下一篇:
我的R语言入门笔记发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap