1.K-means算法原理
K-means算法是一种典型的基于划分的聚类算法。划分法的目的是将数据聚为若干簇,簇内的点都足够近,簇间的点都足够远。通过计算数据集中样本之间的距离,根据距离的远近将其划分为多个簇。K-means首先需要假定划分的簇数k,然后从数据集中任意选择k个样本作为该簇的中心。具体算法如下:
(1)从n个数据对象中任意选择k个对象作为初始聚类中心。
(2)计算在聚类中心之外的每个剩余对象与中心对象之间的距离,并根据最小距离重新对相应对象进行划分。
(3)重新计算每个“有变化的聚类”的中心,确定“新的聚类中心”。
(4)迭代第(2)和第(3)步,当每个聚类不再发生变化或小于指定阈值时,停止计算。
2.K-means算法案例
扩展库sklearn.cluster中的K-means类实现了K-means算法,其构造方法的语法格式如下:
def__init__(self,n_clusters=8,init='k-means++',n_init=10,max_iter=300,tol=1e-4,precompute_distances=' auto',verbose=0,random_state=None,copy_x=True,n_jobs=1)
常用参数如表4-3所示,常用方法如表4-4所示。
表4-3 K-means类常用参数(www.xing528.com)
表4-4 K-means类常用方法
下面是用代码演示sklearn.cluster中K-means算法的基本步骤。例4_5将给定的数据运用K-means算法进行聚类分析,将样本分成三类。
例4_5_K-means.py
二维码4-3 K-means划分聚类
运行结果如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。