利用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. (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. (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
}

最后得到图片:
\"聚类后图片\"
最后我们只需要通过自己的业务知识,对分类后的数据进行分析即可。

收藏 打印