全文鏈接:https://tecdat.cn/?p=38708
分析師:Yuling Fang
信息時代的來臨使得企業營銷焦點從產品中心轉向客戶中心,客戶關系管理成為企業的核心問題(點擊文末“閱讀原文”獲取完整代碼數據)。
客戶關系管理的關鍵是客戶分群,通過客戶分群,區分無價值客戶和高價值客戶,同時更好的了解客戶的特征,使企業能夠針對不同價值客戶指定優化的個性化服務方案,實現精細化運營。客戶分群是關鍵節點。
任務/目標
根據航空公司觀測窗口內的客戶社會信息、乘機信息和積分信息(查看文末了解數據免費獲取方式)對客群進行價值分類,為業務提供運營策劃參考。
數據源準備
選取寬度為兩年的分析觀測窗口,抽取觀測窗口內有乘機記錄的所有客戶的詳細數據,共62988行。對原始數據進行探索和數據清洗。
缺失值處理。通過數據探索分析,發現gender、age、sum分別有3、420、689個缺失值,由于變更比總記錄數較少,故直接刪除處理。
異常值處理。通過對數據觀察,發現原始數據中存在平均折扣率不為0、總飛行公里數大于0、票價卻為0的數據,屬于有異常情況,需要剔除。
特征轉換
把不能處理的特征做一些轉換,處理成算法容易處理的干凈特征:
時間信息。會員入會時間距離觀測窗口結束的時間,需要通過入會時間和觀測窗口的結束時間相減得到。
省份信息。work_province列存在省份書寫格式不統一、部分出現錯別字的問題,使用jieba將work_province列拆分字符分類統一格式。
數據變換
構建包含L、R、F、M、C五項指標的新數據表,并對應屬性定義表,得到LRFMC模型中五項指標的計算公式:
采用標準差標準化的方法數據進行標準化計算,每項數據減去每項指標數據的平均值,得到的差除于每項指標數據的標準差值。
聚類個數
通過K_means聚類方法進行機器學習,繪圖觀察誤差平方和SSE與中心點個數k的關系,比較每個k值的SSE,使用肘部法尋找誤差平方和SSE突然變小時對應的k值,得到k=5,將客戶群體聚類劃分為5個客群。
建模
LRFMC模型是根據實際場景基于RFM模型優化調整后得到的,是衡量客戶價值和客戶創造利益能力的重要工具和手段。
聚類結果
將客群按照客戶價值聚類劃分為五類貼上群體標簽,記為1、2、3、4、5五類,對聚類結果進行特征分析,其可視化圖形如下:
點擊標題查閱往期內容
PYTHON用戶流失數據挖掘:建立邏輯回歸、XGBOOST、隨機森林、決策樹、支持向量機、樸素貝葉斯和KMEANS聚類用戶畫像
左右滑動查看更多
01
02
03
04
根據雷達圖分布,對客群的類別、指標情況、重要特征、運營建議進行歸納總結,分別如下:
基于航空公司數據的客戶價值分析|附數據代碼
在當今競爭激烈的航空市場中,深入了解客戶價值對于航空公司制定精準營銷策略、優化資源配置以及提升客戶滿意度等方面都有著至關重要的意義。本文旨在通過對航空公司客戶相關數據的分析,運用聚類等數據分析方法,挖掘不同客戶群體的特征,進而對客戶價值進行評估與分析。
數據準備與預處理
首先,我們需要導入一系列常用的數據處理和可視化相關的庫,代碼如下:
同時,為了確保在圖形繪制中能夠正確顯示中文字體等相關設置,我們會進行如下配置:
mpl.rcParams\['font.sans-serif'\]?=?\['SimHei'\]
mpl.rcParams\['axes.unicode_minus'\]?=?False
接著,從指定路徑讀取航空公司的客戶數據文件,并查看前10行數據,了解數據的大致樣貌,代碼如下:
data?=?pd.read_csv(r'/Us.csv',encoding='utf-8')
data.head(10)
這一步能讓我們直觀看到諸如會員卡號、入會時間、性別、年齡等眾多字段以及對應的數據內容。然后,我們可以通過data.info()
查看數據的詳細信息,包括每列的數據類型、非空值數量等情況,以此來掌握數據的整體結構。還可以使用data.describe().T
對數據進行描述性統計分析,像各列數據的均值、標準差、最小值、最大值等統計指標,有助于我們初步了解各特征的分布情況。
此外,分析數據中的缺失值情況也很關鍵,通過data.isnull().sum().sort_values(ascending=False)
可以統計出每列的缺失值數量,并按照從多到少進行排序。針對存在缺失值的情況,我們做了相應的數據清洗操作,例如篩選出特定列非空的數據等,代碼如下:
data=data\[data\['SUM\_YR\_1'\].notnull()?&?data\['SUM\_YR\_2'\].notnull()\]
t1?=?data\['SUM\_YR\_1'\]!=0
t2?=?data\['SUM\_YR\_2'\]!=0
經過上述一系列的數據預處理操作,我們為后續的客戶價值分析打下了良好的數據基礎。
LRFMC模型客戶價值指標構建
在進行客戶價值分析時,我們選取了幾個關鍵的指標來綜合衡量客戶價值。其中,R代表最近消費時間間隔,具體是用最后一次乘機時間至觀察窗口末端時長來衡量;F表示消費頻率,也就是觀測窗口內的飛行次數;M體現消費金額,由于航空票價受到距離和艙位等級等多種因素影響,這里的艙位因素考慮艙位所對應的折扣系數平均值,距離因素則是一定時間內累積的飛行里程;另外,考慮到航空公司的會員系統中,用戶入會時間長短對客戶價值有一定影響,所以增加了指標入會時間長度,即客戶關系長度,通過觀測窗口的結束時間減去入會時間(單位為月)來計算,也就是LOAD_TIME - FFP_DATE
。
綜合起來,我們構建了LRFMC這5個指標,具體如下:
L:
LOAD_TIME - FFP_DATE
(會員入會時間距觀測窗口結束的月數)R:
LAST_TO_END
(客戶最近一次乘坐公司距觀測窗口結束的月數)F:
FLIGHT_COUNT
(觀測窗口內的飛行次數)M:
SEG_KM_SUM
(觀測窗口的總飛行里程)C:
AVG_DISCOUNT
(平均折扣率)
通過以下代碼提取相關列數據并查看前幾行:
df=data\[\["FFP\_DATE","LOAD\_TIME","LAST\_TO\_END","FLIGHT\_COUNT","SEG\_KM\_SUM","avg\_discount"\]\]
df.head()
然后,定義函數LRFMC
來進一步處理數據,構建包含LRFMC指標的數據結構。
為了消除數據不同特征之間量綱的影響,我們還定義了函數zscore_data
對數據進行標準化處理,代碼如下:
def?zscore_data(data):data2=(data-data.mean(axis=0))/data.std(axis=0)data2.columns=\['Z'+i?for?i?in?data.columns\]return?data2
df4=zscore_data(df3)
df4.head()
客戶K-Means聚類分析
接下來,運用K-Means聚類算法對處理好的數據進行聚類分析,以此來劃分不同的客戶群體。首先,我們設置聚類類別數目等參數,調用K-Means算法進行模型訓練,代碼如下:
k=5
#?調用k-means算法
#?輸入聚類類別數目,n_jobs為并行數
#n_clusters就是K值,也是聚類值
#init初始化方法,可以是kmeans++,隨機,或者自定義的ndarray
model.fit(df4)?#?訓練
通過model.labels_
可以獲取每個樣本所屬的類別標簽,進而統計各個類別的數目以及找出聚類中心等:
r1?=?pd.Series(model.labels_).value_counts()?#?統計各個類別的數目
r2?=?pd.DataFrame(model.cluster\_centers\_)?#?找出聚類中心
將相關結果進行整合,并輸出到Excel文件中方便查看和后續分析。
同時,還可以將每個樣本對應的類別信息整合到數據中,并輸出到Excel文件,代碼如下:
r3?=?pd.concat(\[df4,?pd.Series(model.labels_,?index=df4.index)\],?axis=1)?#?詳細輸出每個樣本對應的類別
r3.columns?=?list(df4.columns)?+?\['聚類類別'\]?#?重命名表頭
為了確定合適的聚類數目,我們通過循環計算不同聚類數目下的簇內誤方差(SSE),并繪制折線圖進行可視化展示,代碼如下:
#n_clusters就是K值,也是聚類值#init初始化方法,可以是kmeans++,隨機,或者自定義的ndarrayplt.xlabel("簇數量")
plt.ylabel("簇內誤方差(SSE)")
對應的可視化圖像如下:
其能夠幫助我們直觀判斷選擇多少個聚類類別比較合適。
客戶群體特征分析與價值評估
基于聚類結果,我們繪制雷達圖來對不同客戶群體的特征進行可視化分析:
對應的雷達圖如下:
從“客戶群特征分析圖”中,結合業務情況,我們對不同客戶群體進行特征分析與價值評估:
客戶群1:在平均折扣率(C屬性)上表現最為突出,這類客戶可以定義為重要挽留客戶,航空公司需要格外關注他們的動態,以防其流失。
客戶群2:其在最近消費時間間隔(R屬性)方面數值最大,而在消費頻率(F屬性)、總消費金額(M屬性)方面是最小的,屬于低價值客戶群體,對航空公司的貢獻相對較低。
客戶群3:在消費頻率(F屬性)、總消費金額(M屬性)上數值最大,在最近消費時間間隔(R屬性)上最小,這類客戶是航空公司的重要保持客戶,航空公司應重點投入資源,進行差異化管理,提升他們的忠誠度和滿意度,進一步鞏固他們的價值。
客戶群4:在客戶關系長度(L屬性)、平均折扣率(C屬性)上最小,可將其歸類為一般客戶,對航空公司來說其價值處于中等偏下水平。
客戶群5:在客戶關系長度(L屬性)上最大,可定義為重要發展客戶,雖然他們當前價值可能不是很高,但有著較大的發展潛力,航空公司可以采取相應措施促使他們增加消費。
綜上所述,通過對航空公司客戶數據的深入分析和聚類處理,我們清晰地劃分出了不同價值的客戶群體,航空公司可以依據這些分析結果,制定精準的營銷策略,合理分配資源,實現更好的運營和發展。
關于分析師
?
在此對 Yuling Fang 對本文所作的貢獻表示誠摯感謝,她完成智能醫學工程專業學位,專注數據相關領域。擅長 Python、SQL、Tableau、Excel,在數據采集、數據統計、數據分析方面有著專業能力。
數據獲取
在公眾號后臺回復“航空客戶數據”,可免費獲取完整數據。
本文中分析的數據、代碼分享到會員群,掃描下面二維碼即可加群!?
資料獲取
在公眾號后臺回復“領資料”,可免費獲取數據分析、機器學習、深度學習等學習資料。
點擊文末“閱讀原文”
獲取全文完整代碼數據資料。
本文選自《Python用K-Means均值聚類、LRFMC模型對航空公司客戶數據價值可視化分析指標應用|數據分享》。
點擊標題查閱往期內容
Python對商店數據進行lstm和xgboost銷售量時間序列建模預測分析
PYTHON集成機器學習:用ADABOOST、決策樹、邏輯回歸集成模型分類和回歸和網格搜索超參數優化
R語言集成模型:提升樹boosting、隨機森林、約束最小二乘法加權平均模型融合分析時間序列數據
Python對商店數據進行lstm和xgboost銷售量時間序列建模預測分析
R語言用主成分PCA、?邏輯回歸、決策樹、隨機森林分析心臟病數據并高維可視化
R語言基于樹的方法:決策樹,隨機森林,Bagging,增強樹
R語言用邏輯回歸、決策樹和隨機森林對信貸數據集進行分類預測
spss modeler用決策樹神經網絡預測ST的股票
R語言中使用線性模型、回歸決策樹自動組合特征因子水平
R語言中自編基尼系數的CART回歸決策樹的實現
R語言用rle,svm和rpart決策樹進行時間序列預測
python在Scikit-learn中用決策樹和隨機森林預測NBA獲勝者
python中使用scikit-learn和pandas決策樹進行iris鳶尾花數據分類建模和交叉驗證
R語言里的非線性模型:多項式回歸、局部樣條、平滑樣條、 廣義相加模型GAM分析
R語言用標準最小二乘OLS,廣義相加模型GAM?,樣條函數進行邏輯回歸LOGISTIC分類
R語言ISLR工資數據進行多項式回歸和樣條回歸分析
R語言中的多項式回歸、局部回歸、核平滑和平滑樣條回歸模型
R語言用泊松Poisson回歸、GAM樣條曲線模型預測騎自行車者的數量
R語言分位數回歸、GAM樣條曲線、指數平滑和SARIMA對電力負荷時間序列預測
R語言樣條曲線、決策樹、Adaboost、梯度提升(GBM)算法進行回歸、分類和動態可視化
如何用R語言在機器學習中建立集成模型?
R語言ARMA-EGARCH模型、集成預測算法對SPX實際波動率進行預測
在python 深度學習Keras中計算神經網絡集成模型
R語言ARIMA集成模型預測時間序列分析
R語言基于Bagging分類的邏輯回歸(Logistic Regression)、決策樹、森林分析心臟病患者
R語言基于樹的方法:決策樹,隨機森林,Bagging,增強樹
R語言基于Bootstrap的線性回歸預測置信區間估計方法
R語言使用bootstrap和增量法計算廣義線性模型(GLM)預測置信區間
R語言樣條曲線、決策樹、Adaboost、梯度提升(GBM)算法進行回歸、分類和動態可視化
Python對商店數據進行lstm和xgboost銷售量時間序列建模預測分析
R語言隨機森林RandomForest、邏輯回歸Logisitc預測心臟病數據和可視化分析
R語言用主成分PCA、?邏輯回歸、決策樹、隨機森林分析心臟病數據并高維可視化
Matlab建立SVM,KNN和樸素貝葉斯模型分類繪制ROC曲線
matlab使用分位數隨機森林(QRF)回歸樹檢測異常值