用KMeans实现航空公司客户价值分析,代码如下:
###航空公司客户价值分析
##设置工作空间
setwd("D:/my study/R数据分析与挖掘实战/data&code/7/上机实验")
##数据探索分析
#数据读取
datafile=read.csv("./data/air_data.csv",header=T)
#确定要探索分析的变量
col=c(15:18,20:29)#去掉日期型变量
#输出变量最值、缺失情况
summary(datafile[,col])
##数据清洗
#丢弃票价为空的记录
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
##数据标准化处理
#数据读取
datafile=read.csv("./data/zscoredata.csv",he=T)
#数据标准化
zscoredfile=scale(datafile)
colnames(zscoredfile)=c("ZL","ZR","ZF","ZM","ZC")
#数据写入
write.csv(zscoredfile,"./zjchen.code/zscoreddtata.csv")
##K-Means聚类算法模型
#数据读取
inputfile<-read.csv("./data/zscoreddata.csv",he=T)
#聚类分析
result<-kmeans(inputfile,5)
#结果输出
type<-result$cluster
table(type)#查看类别分布
centervec<-result$center
代码运行结果如下:
> ###航空公司客户价值分析
>
>
> ##设置工作空间
> setwd("D:/my study/R数据分析与挖掘实战/data&code/7/上机实验")
>
> ##数据探索分析
> #数据读取
> datafile=read.csv("./data/air_data.csv",header=T)
> #确定要探索分析的变量
> col=c(15:18,20:29)#去掉日期型变量
> #输出变量最值、缺失情况
> summary(datafile[,col])
SUM_YR_1 SUM_YR_2
Min. : 0 Min. : 0
1st Qu.: 1003 1st Qu.: 780
Median : 2800 Median : 2773
Mean : 5355 Mean : 5604
3rd Qu.: 6574 3rd Qu.: 6846
Max. :239560 Max. :234188
NA's :551 NA's :138
SEG_KM_SUM WEIGHTED_SEG_KM
Min. : 368 Min. : 0
1st Qu.: 4747 1st Qu.: 3219
Median : 9994 Median : 6978
Mean : 17124 Mean : 12777
3rd Qu.: 21271 3rd Qu.: 15300
Max. :580717 Max. :558440
AVG_FLIGHT_COUNT AVG_BP_SUM
Min. : 0.2500 Min. : 0.0
1st Qu.: 0.4286 1st Qu.: 336.0
Median : 0.8750 Median : 752.4
Mean : 1.5422 Mean : 1421.4
3rd Qu.: 1.8750 3rd Qu.: 1690.3
Max. :26.6250 Max. :63163.5
BEGIN_TO_FIRST LAST_TO_END
Min. : 0.0 Min. : 1.0
1st Qu.: 9.0 1st Qu.: 29.0
Median : 50.0 Median :108.0
Mean :120.1 Mean :176.1
3rd Qu.:166.0 3rd Qu.:268.0
Max. :729.0 Max. :731.0
AVG_INTERVAL MAX_INTERVAL
Min. : 0.00 Min. : 0
1st Qu.: 23.37 1st Qu.: 79
Median : 44.67 Median :143
Mean : 67.75 Mean :166
3rd Qu.: 82.00 3rd Qu.:228
Max. :728.00 Max. :728
ADD_POINTS_SUM_YR_1 ADD_POINTS_SUM_YR_2
Min. : 0.0 Min. : 0.0
1st Qu.: 0.0 1st Qu.: 0.0
Median : 0.0 Median : 0.0
Mean : 540.3 Mean : 814.7
3rd Qu.: 0.0 3rd Qu.: 0.0
Max. :600000.0 Max. :728282.0
EXCHANGE_COUNT avg_discount
Min. : 0.0000 Min. :0.0000
1st Qu.: 0.0000 1st Qu.:0.6120
Median : 0.0000 Median :0.7119
Mean : 0.3198 Mean :0.7216
3rd Qu.: 0.0000 3rd Qu.:0.8095
Max. :46.0000 Max. :1.5000
>
> ##数据清洗
> #丢弃票价为空的记录
> 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
>
> ##数据标准化处理
> #数据读取
> datafile=read.csv("./data/zscoredata.csv",he=T)
> #数据标准化
> zscoredfile=scale(datafile)
> colnames(zscoredfile)=c("ZL","ZR","ZF","ZM","ZC")
> #数据写入
> write.csv(zscoredfile,"./zjchen.code/zscoreddtata.csv")
>
> ##K-Means聚类算法模型
> #数据读取
> inputfile<-read.csv("./data/zscoreddata.csv",he=T)
> #聚类分析
> result<-kmeans(inputfile,5)
Warning message:
Quick-TRANSfer stage steps exceeded maximum (= 3102550)
> #结果输出
> type<-result$cluster
> table(type)#查看类别分布
type
1 2 3 4 5
12407 12408 12414 12413 12409
> centervec<-result$center