資料探勘例項(航空公司客戶價值分析)
阿新 • • 發佈:2019-02-12
一、實現目標
(1)藉助航空公司客戶資料,對客戶進行分類
(2)對不同的客戶進行特徵分析,比較不同類客戶的客戶價值
(3)對不同價值的客戶類別提供個性化服務,指定相應的營銷策略
二、分析方法與過程
航空客運資訊挖掘主要步驟:
(1)從航空公司的資料來源進行選擇性的抽取與新增資料抽取分別形成歷史資料和增量資料
(2)對步驟(1)中形成的兩個資料集進行資料探索和預處理,包括資料缺失值與異常值的探索分析,資料的屬性規約、清洗和變換
(3)利用步驟(2)中形成的已完成資料預處理的建模資料,基於客戶價值LRFMC模型進行客戶分群,對各個客戶進行特徵分析,識別出有價值的客戶
(4)針對模型結果得到不同價值的客戶,採用不同的營銷手段,提供定製化的服務
資料抽取
資料探索分析:對資料進行缺失值分析與異常值分析,分析出資料的規律以及異常值,通過對資料觀察發現原始資料中存在票價為空值,票價最小值為0,折扣率最小值為0,總飛行公里數大於0的記錄,查詢每列屬性觀察值中空值個數、最大值、最小值:
# -*- coding:utf-8 -*-
#對資料進行基本的探索,返回缺失值個數,最大值,最小值
import pandas as pd
#資料檔案路徑初始化
datafile = 'air_data.csv' #第一行為標籤屬性
#定義資料探索結果檔名
resultfile = 'data_explore.xls'
#使用pandas模組內建函式對檔案內容驚醒讀取
data = pd.read_csv(datafile,encoding = 'utf-8') #設定檔案讀取編碼格式
#獲取資料的相應屬性內容
explore = data.describe(percentiles=[], include='all').T #對探索結果矩陣進行轉置
print('T-explore:',explore)
#計算資料結果中的空值個數,describe()函式只返回有值資料個數
explore['null'] = len(data) - explore['count']
#提取資料探索結果中的null、min、max三列,並且對資料表表頭進行重新命名
explore = explore[['null','max','min']]
print('explore:',explore)
print('explore.columns:',explore.columns)
explore.columns = [u'空值數',u'最大值',u'最小值']
print('u-explore:',explore)
#將資料探索的最後結果寫入檔案中
explore.to_excel(resultfile)
print('檔案寫入完成!')
資料預處理
採用資料清洗、屬性規約、資料變換的預處理方法
使用Pandas對滿足清洗條件的資料進行丟棄,處理方法:滿足清洗條件的一行資料全部丟棄:
# -*- coding:utf-8 -*-
#清洗丟棄掉不符合規則的資料
import pandas as pd
datafile = 'air_data.csv'
cleanfile = 'data_clean.csv'
#讀取檔案內容,並設定讀取的編碼格式
data = pd.read_csv(datafile,encoding = 'utf-8')
#提取票價為非空值
# print('data["SUM_YR_1"].notnull:',data['SUM_YR_1'].notnull())
data = data[data['SUM_YR_1'].notnull()*data['SUM_YR_2'].notnull()]
# print("[data['SUM_YR_1'].notnull()*data['SUM_YR_2'].notnull()]:",data)
#票價不為0,或者平均折扣率與總公里數同時為0的記錄
index1 = data['SUM_YR_1'] != 0
index2 = data['SUM_YR_2'] != 0
index3 = (data['SEG_KM_SUM'] == 0) & (data['avg_discount'] == 0)
#將資料整合至data變數中
data = data[index1|index2|index3]
data.to_csv(cleanfile)
print('檔案寫入完畢!')
資料變換
將資料轉換成適當的格式,以適應挖掘任務以及演算法的需要
# -*- coding:utf-8 -*-
#標準化標準差
import pandas as pd
datafile = 'zscoredata.xls'
stdfile = 'data_std.xls'
#讀取資料,並設定將資料轉化為utf-8格式
data = pd.read_excel(datafile,coding = 'utf-8')
#根據標準化公式對資料進行標準化
data = (data - data.mean(axis=0))/(data.std(axis=0))
#對錶的表頭進行重新命名
data.columns = ['Z'+i for i in data.columns]
#將標準化結果寫入檔案
data.to_excel(stdfile)
print('檔案寫入完畢!')
模型構建
客戶價值分析模型構建主要由兩個部分構成,第一部分根據航空公司客戶5個指標的資料,對客戶進行聚類分群。第二部分結合業務對每個客戶群進行特徵分析,分析其客戶價值,並對每個客戶群進行排名。
(1)客戶聚類
採用K-Means聚類演算法對客戶資料進行客戶分群,聚成5類
# -*- coding:utf-8 -*-
#匯入相關包
import pandas as pd
from sklearn.cluster import KMeans
#初始化資料檔案路徑
datafile = 'data_std.xls'
#讀出資料
data = pd.read_excel(datafile,coding = 'utf-8')
#設定類別個數5
k = 5
#建立聚類模型物件
model = KMeans(n_clusters=5)
model.fit(data) #尋來你模型
#輸出模型的聚類中心,檢視各樣本的類別
print('model.cluster_centers_:',model.cluster_centers_)
print('model.labels_:',model.labels_)
工程檔案內容: