数学建模 小组赛第一题 航空公司

数学建模 小组赛第一题 航空公司

选取指标是根据RFM模型定义的客户粘性、忠诚度和购买力加上终身价值和潜在价值选出来了五个指标LRFMC。L会员注册时长代表终身价值,R最后一次购买商品到现在的时间表达粘性,F观测期内乘坐次数表忠诚度,M总里程表购买力,C平均折扣代表潜在价值。

判断数据的最佳聚类数 这里用了一个BIC(基于mclust包)的一个判断标准,这个BIC和贝叶斯准则不一样,需注意,方法虽然准确但是时间特别久,本来准备用K—中心法区别于K均值法再做一个,但是跑了七个小时没出数据,就放弃了,但我认为K中心可能是除了手肘法最受认可的判断聚类数的方法
而手肘法虽然由于他的简便程度广为人知,但是在面对大数据是可能并不能够起到很好的分类作用

导入数据标准化后聚类

write.csc(name,file="",header=T)
NEWTRAIN=scale(NEWTR)
KM=kmeans(NEWTRAIN,32,iter.max=100)

导入原始数据并在后面添加聚类小组

CLU=data.frame(NEWTR,KM$cluster)
library(dplyr)

下面是我理解错了标准化,想找出每个类自己的方差和均值

//f找出每一类的方差和均值 然后for循环
f=function(x){
m=colMeans(filter(CLU,T == x))
s=apply(filter(CLU,T==x),2,sd)
return (c(m,s))
}
newdata=c()
for(i in 1 : 32){
data=f(i)
newdata=rbind(newdata,data)
}
//其实只要进行下面的就行 计算我是在excel中算的
m=colMeans(CLU);m
s=apply(CLU,2,sd)

雷达图和饼状图

//radarchart
RJL=data.frame(
类别=c(‘重要保持’,‘重要发展’,‘一般’,‘低价值’),
L=c(‘65.44812254’,‘47.51834131’,‘34.87399907’,‘49.48349565’),
R=c(‘31.30403159’,‘61.98515216’,‘159.5522351’,‘121.7262122’),
F=c(‘34.97579968’,‘16.33296907’,‘11.42406497’,‘8.187507616’),
M=c(‘49060.53889’,‘23235.32796’,‘17795.11144’,‘11725.83158’),
C=c(‘0.775282644’,‘0.93160998’,‘0.75569298’,‘0.64152259’),
人数=c(‘7190’,‘4580’,‘5992’,‘15450’)
)
RJL
max=apply(RJL[,2:6],2, max)
min=apply(RJL[,2:6],2, min)
radar=data.frame(rbind(max,min,RJL[,2:6]))
//而后发现他们都是因子 不能画图 就将他们变成数值型
radar L = a s . n u m e r i c ( a s . c h a r a c t e r ( r a d a r L=as.numeric(as.character(radar L))
radar R = a s . n u m e r i c ( a s . c h a r a c t e r ( r a d a r R=as.numeric(as.character(radar R))
radar F = a s . n u m e r i c ( a s . c h a r a c t e r ( r a d a r F=as.numeric(as.character(radar F))
radar M = a s . n u m e r i c ( a s . c h a r a c t e r ( r a d a r M=as.numeric(as.character(radar M))
radar C = a s . n u m e r i c ( a s . c h a r a c t e r ( r a d a r C=as.numeric(as.character(radar C))
max=apply(radar,2,max)
min=apply(radar,2,min)
radar=data.frame(rbind(max,min,radar))
//雷达图
radarchart(radar,pty = 16,plty=1,plwd=2,vlcex=0.8)
text(1.8,1.2,labels = “–important-maintaining customer”,col=1)
text(1.8,1.0,labels = “–important-developing customer”,col=2)
text(1.8,0.8,labels = “–general customer”,col=3)
text(1.8,0.6,labels = “–low-value customer”,col=4)

//饼状图
people=c(7190,4580,5992,15450)
percent=paste(round(100*people/sum(people),2),"%")
pie(people,labels = percent,main=“客户类别——饼状图”,col=c(1,2,3,4))
lengend(“topright”,labels,cex=0.8,fill=c(1,2,3,4))

发布了6 篇原创文章 · 获赞 1 · 访问量 483

猜你喜欢

转载自blog.csdn.net/weixin_43745631/article/details/84892396