Kmeans聚类分析

聚类分析基本概念及常用算法
概念

聚类分析是一组将研究对象分为相对同质的群组的统计分析技术。聚类分析也叫分类分析或数值分类。聚类和分类的不同之处在于聚类所要求划分的类是未知的。

聚类度量方法
聚类之间类的度量是分距离和相似系数来度量的。
距离用来度量样品之间的相似性(KMeans聚类,系统聚类中的Q型聚类)
相似系数用来度量变量之间的相似性。(系统聚类中的R型聚类)
聚类分析研究方法

层次的方法
划分方法
基于密度的方法
基于网格的方法
基于模型的方法

常用聚类分析研究方法

K-pototypes算法
K-Means算法
CLARANS算法(划分方法)
BIRCH算法(层次方法)
CURE算法(层次方法)
DBSCAN算法(基于密度的方法)
CLIQUE算法(综合了基于密度和基于网格的算法)

Kmeans算法概述
Kmeans算法描述

适用于大样本,但需要事先制定划分为K个类。
从n个数据对象任意选择k个对象作为初始聚类中心,对于剩下的其他对象,则根据它们与这些聚类中心的相似度(距离),分别将他们分配给与其最相似的(聚类中心所代表的)聚类;再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值);不断重复这一过程,直到标准测度函数开始收敛为止。K个聚类具有以下特点:各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开。

Kmeans算法流程

step1:从n个数据对象任意选择k个对象作为初始聚类中心
step2:根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离,并根据最小距离重新对相应对象进行划分。
step3:重新计算每个(有变化)聚类的均值(中心对象)
重复下面过程直到收敛{
对于每一个样例i,计算其应该属于的类:
c(i):=arg min||x(i) - u(i)||^2
对于每一个类j,重新计算该类的质心:
uj := ( ∑i=1,m { c(i) = j }x(i) ) / ( ∑i=1,m { c(i)=j } )
}
step4:循环2、3步,直到每个聚类不再发生变化为止。

Kmeans算法伪代码

创建k个点作为初始的质心点
当任意一个点的簇分配结果发生改变时
对数据集中的每一个数据点
对每一个质心
计算质心与数据点的距离
将数据点分配到距离最近的簇
对每一个簇,计算簇中所有点的均值,并将均值作为质心

Kmeans算法优缺点
  • 优点:
  1. 本算法确定的k个划分到达平方误差最小。当聚类是密集的,且类与类之间区别明显时效果较好。
  2. 对于处理大数据集,这个算法是相对可伸缩和高效的,计算的复杂度为O(NKt),其中N是数据对象的数目,K是聚类中心,t是迭代的次数。
  • 缺点
  1. K是事先给定的,但非常难以选定
  2. 初始聚类中心的选择对聚类结果有较大的影响。
Kmeans算法python实现
from sklearn.cluster import KMean
clf = KMeans(n_clusters=3,max_iter=300,n_init=10)
clt.fit(X)
yperd = clf.predict(X)

猜你喜欢

转载自blog.csdn.net/strawqqhat/article/details/89842733