1. 程式人生 > >KMeans機器學習對客戶價值分類

KMeans機器學習對客戶價值分類

對原始資料進行資料清洗,生成LRFMC資料

L:成為會員時常
R:最後一次使用服務
F:使用服務總次數
M:使用服務總深度
C:平均獲得折扣值

最後使用KMeans機器學習分類演算法就LRFMC指標進行分類,估計客戶價值

#python3.6.5
#-*- coding: utf-8 -*-

import pandas as pd
from sklearn.cluster import KMeans

data_file= 'air_data.csv' #航空原始資料,第一行為屬性標籤
output_file = 'data_output.csv' 

data = pd.read_csv(
data_file,encoding='utf-8') #讀取原始資料,指定UTF-8編碼(需要用文字編輯器將資料裝換為UTF-8編碼) print(data.info()) #data clear data = data[data['SUM_YR_1'].notnull() & data['SUM_YR_2'].notnull()] #票價非空值才保留 #只保留票價非零的,或者平均折扣率與總飛行公里數同時為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[index1 | index2 | index3] #該規則是“或” data = data.reset_index()#資料清洗後,被清洗掉的空行仍然有索引,重新索引 #data select member_no =data['MEMBER_NO'] member_length=pd.to_datetime(data['LOAD_TIME'])-pd.to_datetime(data['FFP_DATE'])#計算會員註冊時長 L = member_length.map(
lambda x:x.days)#日期格式轉換為整數型格式 R = data['LAST_TO_END'] F = data['FLIGHT_COUNT'] M = data['SEG_KM_SUM'] C = data['avg_discount'] data_train = pd.concat([L,R,F,M,C],axis=1) #data zscore data_train=(data_train-data_train.mean(axis=0))/(data_train.std(axis=0))#資料歸一化 data_train.columns=['L','R','F','M','C']#本方法採取LRFMC特徵值 #K-means kmodel = KMeans(n_clusters = 5) kmodel.fit(data_train) print(kmodel)#檢視聚類詳細資訊 print(kmodel.cluster_centers_) #檢視聚類中心 print(kmodel.labels_)#檢視各樣本對應的類別 labels=pd.Series(kmodel.labels_)#將聚類結果轉化為dataframe格式 output=pd.concat([member_no,data_train,labels],axis=1)#嫁接每個會員的聚類結果 output.rename(columns={output.columns[6]:"label"},inplace=True)#修改第七列列名 output.to_csv(output_file)