数据+ 代码来源:Python数据分析与挖掘实战
数据:根据这些数据将客户分类成不同群体,并评价这些客户群的价值
R: 最近依次消费时间间隔;F: 消费频率;M: 消费总金额
部分数据如下:
代码:
#-*- coding: utf-8 -*-import pandas as pdfrom sklearn.cluster import KMeansinputfile = '../data/consumption_data.xls'outputfile = './data_type.xls'k =3 #聚类的级别iteration = 500 #剧烈最大循环次数data = pd.read_excel(inputfile, index_col='Id')data_zs = 1.0 *(data-data.mean())/data.std() #数据标准化model = KMeans(n_clusters=k, n_jobs=4, max_iter=iteration) #分为k类,并发数4model.fit(data_zs) #开始聚类#简单打印结果r1 = pd.Series(model.labels_).value_counts() #统计各个类别的数目r2 = pd.DataFrame(model.cluster_centers_) #找出聚类中心r = pd.concat([r2, r1], axis=1) #横向连接(0是横向),得到聚类中心对应的类别下的数目r.columns = list(data.columns) + [u'类别数目'] #重命名表头#print(r)#详细输出原始数据及其类别r = pd.concat([data, pd.Series(model.labels_, index=data.index)], axis=1) #详细输出每个样本对应的类别r.columns = list(data.columns) + [u'聚类类别'] #重命名表头r.to_excel(outputfile) #保存结果
输出结果部分如下:
接着用Pandas和Matplotlib绘制的不同客户分群的概率密度函数图,通过这些图能直观地比较不同客户群的价值,代码如下:
def density_plot(data): #自定义作图函数import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = Falsep = data.plot(kind='kde', linewidth=2, subplots=True, sharex=False)[p[i].set_ylabel(u'密度') for i in range(k)]plt.legend()return pltpic_output = './pd_'for i in range(k):density_plot(data[r[u'聚类类别']==i]).savefig(u'%s%s.png' % (pic_output, i))
分群1的概率密度函数图
分群1特点:R间隔相对较小,主要集中在0~30天;消费次数集中在10~25次,消费金额在500~2000。
分群2的概率密度函数图
分群2特点:R间隔分布在0~30天;消费次数集中在0~12次;消费金额在0~1800。
分群3的概率密度函数图
分群3特点:R间隔相对较大,间隔分布在30~80天;消费次数在0~15次;消费金额在0~2000。
对比分析:分群1时间间隔较短,消费次数多,而且消费金额较大,是高消费、高价值人群。分群2的时间间隔、消费次数和消费金额处于中等水平,代表着一般客户。分群3的时间间隔较长,消费次数较少,消费金额也不是特别的高,是价值较低的客户群体。
如果觉得《数据建模-聚类分析-K-Means算法》对你有帮助,请点赞、收藏,并留下你的观点哦!