数据建模-聚类分析-K-Means算法

常用聚类方法
类别 包括主要算法
划分(分裂)方法 K-Means算法(K-平均)、K-MEDOIDS算法(K-中心点)、CLARANS算法(基于选择的算法)
层次分析方法 BIRCH算法(平衡迭代规约和聚类)、CURE算法(代表点聚类)、CHAMELEON算法(动态模型)
基于密度的方法 DBSCAN算法(基于高密度连接区域)、DENCLUE(密度分布函数)、OPTICS算法(对象排序识别)
基于网格的方法 STING算法(统计信息网络)、CLIOUE算法(聚类高维空间)、WAVE-CLUSTER算法(小波变换)
基于模型的方法 统计学方法、神经网络方法
   
常用聚类分析算法
算法名称 算法描述
K-Means K-均值聚类也称为快速聚类法,在最小化误差函数的基础上将数据划分为预定的类数K。该算法原理简单并便于处理大量数据
K-中心点 K-均值算法对孤立点的敏感性,K-中心点算法不采用簇中对象的平均值作为簇中心,而选用簇中离平均值最近的对象作为簇中心
系统聚类 系统聚类也称为多层次聚类,分类的单位由高到低呈树形结构,且所处的位置越低,其包含的对象越少,但这些对象间的共同特征越多。该聚类方法只适用在小数据量的时候使用,数据量大的时候速度会非常慢

数据+ 代码来源:Python数据分析与挖掘实战

数据:根据这些数据将客户分类成不同群体,并评价这些客户群的价值

R: 最近依次消费时间间隔;F: 消费频率;M: 消费总金额

部分数据如下:

代码:

#-*- coding: utf-8 -*-

import pandas as pd
from sklearn.cluster import KMeans


inputfile = '../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类,并发数4
model.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)    #保存结果

输出结果部分如下:

猜你喜欢

转载自blog.csdn.net/Ericsson_Liu/article/details/81783417
今日推荐