机器学习:客户价值分类(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)

你可能感兴趣的:(机器学习,python)