R——航空公司客戶價值分析
阿新 • • 發佈:2018-12-23
用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