R——航空公司客户价值分析

通过K-Means聚类算法对航空公司客户数据进行价值分析。包括数据预处理、标准化及聚类过程,最终将客户分为五类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

用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

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值