Python數據挖掘-航空公司客戶價值分析


 

出處:http://www.ithao123.cn/content-11127869.html

航空公司客戶價值分析 
目標:企業針對不同價值的客戶制定個性化的服務,將有限的資源集中於高價值客戶。 
1、借助航空公司的數據進行客戶分類 
2、比較不同類客戶的價值並制定銷策略

識別客戶價值的最廣泛的模型是通過RFM模型來識別出高價值的客戶: 
Recency: 最近消費時間間隔 
Frequency: 消費頻率 
Monetary: 消費金額 
問題:同樣的消費金額的不同旅客對航空公司的價值不同,例如買長航線、低等倉的旅客和買短航線、高等倉的旅客消費金額相同 
但是價值確實不同的。顯然后者更有價值。因此這個指標可能不合適,故選擇客戶在一定時間內的飛行里程M和乘坐艙位所對應的折扣洗漱C。

航空公司客戶價值分析模型: 
L:會員入會時間距觀測窗口結束的時間 
R:客戶最近一次乘坐公司分級距觀測窗口結束的時間(月數) 
F:客戶在觀測窗口內乘坐公司飛機的次數 
M:客戶在觀測窗口內累計的飛行里程 
C:客戶在觀測窗口內乘坐艙位所對應的折扣系數的平均值 
模型概述: 
通過使用k-means聚類算法沒使用LRFMC模型進行測試 
對模型進行分析,分析客戶的價值

import pandas as pd
datafile = 'data/air_data.csv' resultfile = 'data/tmp.xls' data = pd.read_csv(datafile, encoding='utf-8') explore = data.describe().T explore['null'] = len(data) - explore['count'] #計算空值 explore = explore[['null', 'max', 'min']] #得到每一列的空值,最大值,最小值 explore.to_excel(resultfile) # 是結果寫入文件 

根據上面的數據統計,丟棄所有不符合的數據, 
1、票價為空的 
2、票價為0,但是折扣不是0,而且飛行里程大於0, 
這樣的數據是錯誤數據,直接刪除。

data = pd.read_csv(datafile, encoding='utf-8') cleanedfile = 'data/cleanfile.csv' #存清理后的數據 # 去掉票價是空的元素 data = data[data['SUM_YR_1'].notnull()] data = data[data['SUM_YR_2'].notnull()] # 去掉票價為0,但是折扣不是0,而且飛行里程大於0 data = data.drop(data['SUM_YR_1'] ==0 & (data['SEG_KM_SUM'] != 0) | (data['avg_discount'] > 0)) print(len(data)) # print(data.columns) # 屬性規約:去掉不相管的屬性,只留下與LRFMC模型相關的屬性 # FFP_DATE 入會時間 # LOAD_TIME 觀測窗口結束時間 # FLIGHT_COUNT 飛行頻率 # avg_discount 平均折扣 # SEG_KM_SUM 觀測窗口總飛行公里數 # LAST_TO_END 最后一次乘機時間至觀察窗口末端時長 data = data[['FFP_DATE','LOAD_TIME', 'FLIGHT_COUNT', 'avg_discount', 'SEG_KM_SUM','LAST_TO_END']] data.to_csv(cleanedfile) #寫入文件

數據變化的LRFMC數據: 
L = LOAD_TIME - FFP_DATE (觀測窗口時間 - 入會時間) 
R = LOAD_TIME - LAST_TO_END (觀測窗口時間 - 最后一次乘機時間) 
F = FLIGHT_COUNT 
M = SEG_KM_SUM 
C = avg_discount

from datetime import datetime import time def normal_time(date): ''' 格式化數據 ''' return datetime.strptime(date,"%Y/%m/%d") def interval_time(dd): ''' 計算時間間隔,以月為單位 ''' return dd.days / 30
# data_LRFMC數據 data_LRFMC = pd.DataFrame() # data_LRFMC.columns = ['L', 'R', 'F','M', 'C'] data_LRFMC['L'] = (data['LOAD_TIME'].apply(normal_time) - data['FFP_DATE'].apply(normal_time)).apply(interval_time) data_LRFMC['R'] = data['LAST_TO_END'] data_LRFMC['F'] = data['FLIGHT_COUNT'] data_LRFMC['M'] = data['SEG_KM_SUM'] data_LRFMC['C'] = data['avg_discount'] # 顯示數據的描述,最大值和最小值 data_LRFMC_describe = data_LRFMC.describe().T data_LRFMC_describe = data_LRFMC_describe[['max','min']].T data_LRFMC.to_csv('data/LRFMC.csv') #數據寫入文件

注意到所有的數據值,最大值和最小值間隔較大,需要對數據進行標准化 
這里使用標注差標准化,可以使用認識方法進行處理

# 標准化、重命名、寫入文件 data_normal = (data_LRFMC - data_LRFMC.mean()) / (data_LRFMC.std()) data_normal.columns = ['Z'+i for i in data_normal.columns] data_normal.to_csv('data/data_normal') 

數據處理完畢,下面進行模型的構建, 
1、使用聚類算法,將數據生成5類用戶 
2、針對聚類結果進行特征分析

from sklearn.cluster import KMeans k = 5 kmodel = KMeans(k) #得到模型 kmodel.fit(data_normal) #訓練模型 # 查看聚類中心和對應的類別 print(kmodel.cluster_centers_) print(kmodel.labels_) 
[[ 1.16443082 -0.3775831  -0.08518766 -0.09323092 -0.15906231]
 [-0.70014625 -0.41584827 -0.15935193 -0.15955595 -0.26734394]
 [ 0.01594116  0.00784598 -0.24843215 -0.25750534  2.08918975]
 [ 0.48503896 -0.80134848  2.48281809  2.43536635  0.31393202]
 [-0.31252471  1.68746582 -0.57426021 -0.53886494 -0.18594193]]
[3 3 3 ..., 1 0 4]
import matplotlib.pyplot as plt clu = kmodel.cluster_centers_ x = [1,2,3,4,5] colors = ['red','green','yellow','blue','black'] for i in range(5): plt.plot(x,clu[i],label='clustre '+str(i),linewidth=6-i,color=colors[i],marker='o') plt.xlabel('L R F M C') plt.ylabel('values') plt.show() 

png

客戶價值分析: 
注意kmeans每次運行的時候得到的類會有差別,簇號也會相應的改變,但是中間點基本不會改變: 
L R F M C 
客戶群1:[ 1.16443082 -0.3775831 -0.08518766 -0.09323092 -0.15906231] red 
客戶群2:[-0.70014625 -0.41584827 -0.15935193 -0.15955595 -0.26734394] green 
客戶群3:[ 0.01594116 0.00784598 -0.24843215 -0.25750534 2.08918975] yellow 
客戶群4:[ 0.48503896 -0.80134848 2.48281809 2.43536635 0.31393202] blue 
客戶群5:[-0.31252471 1.68746582 -0.57426021 -0.53886494 -0.18594193] black

我們重點關注的是L,F,M,從圖中可以看到: 
1、客戶群4[blue] 的F,M很高,L也不低,可以看做是重要保持的客戶; 
2、客戶群3[yellow] 重要發展客戶 
3、客戶群1[red] 重要挽留客戶,原因:入會時間長,但是F,M較低 
4、客戶群2[green] 一般客戶 
5、客戶群5[black] 低價值客戶


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM