python算法之K-means聚类

行文体系出自《python数据分析与挖掘》第7章 航空公司客户价值分析

一、数据探索分析

describe()   基本描述分析

import pandas as pd
datafile = r'data\air_data.csv'
resultfile = r'data\explore.xlsx'
data = pd.read_csv(datafile)
explore = data.describe(percentiles = [], include = 'all').T
#include = 'all' 表示所有指标(字段)

备注:count:非空值数;unique:唯一值数量;top:频数最高者;freq:最高频数

计算空值数量、查看range

#计算空值数量
explore['null'] = len(data)-explore['count']
#查看数据概况
explore = explore[['null','max','min']]
explore.columns = ['空值数','最大值','最小值']
explore.to_excel(resultfile)

二、预处理

保留消费非空的记录

data3 = data[data['SUM_YR_1'].notnull() & data['SUM_YR_2'].notnull()]

保留年度票价为0、或者折扣率与总飞行里程同时为0的记录

index1 = data.SUM_YR_1 != 0
index2 = data.SUM_YR_2 != 0
index3 = (data['SEG_KM_SUM'] == 0) & (data['avg_discount'] == 0)
data4 = data3[index1|index2|index3]

data4.to_excel(cleanedfile)

三、特征工程 略

#时间差计算
import datetime
data4.L = pd.to_datetime(data4.LOAD_TIME) - pd.to_datetime(data4.FFP_DATE)

四、标准差标准化

data = (data-data.mean(axis = 0))/(data.std(axis = 0))
#重命名字段
data.columns = ['Z' + i for i in data.columns]

五、模型构建

#K-means聚类
from sklearn.cluster import KMeans
k = 5
iteration = 500 #聚类最大循环次数
kmodel = KMeans(n_clusters = k, n_jobs = 4)#n_jobs是并行数,设置为cpu数
kmodel.fit(data)

六、结果查看与整理

print(kmodel.cluster_centers_)#聚类中心
print(kmodel.labels_)#样本对应的类别

#简单打印结果
r1 = pd.Series(kmodel.labels_).value_counts() #统计各个类别的数目
r2 = pd.DataFrame(kmodel.cluster_centers_) #找出聚类中心
r = pd.concat([r2, r1], axis = 1) #横向连接(0是纵向), 得到聚类中心对应的类别下的数目
r2.columns = list(data.columns)
r.columns = list(data.columns) + [u'类别数目'] #重命名表头

七、结果分析

用excel做了一个雷达图,python目测得自己写轮子

吐槽:质量好差,还加码

八、模型应用

分类为需要费心思的用户和不需要费心思的用户

对需要费心思的贵宾,sssssVIP,高级会员等等名称的用户,各种细分,想方设法保住,不能流失,OK

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值