k-means聚类算法一定要指定聚类个数吗

如题所述

一,K-Means聚类算法原理
k-means 算法接受参数 k
;然后将事先输入的n个数据对象划分为
k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小.聚类相似度是利用各聚类中对象的均值所获得一个“中心对
象”(引力中心)来进行计算的.
  K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一.K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类.通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果.
  假设要把样本集分为c个类别,算法描述如下:
  (1)适当选择c个类的初始中心;
  (2)在第k次迭代中,对任意一个样本,求其到c个中心的距离,将该样本归到距离最短的中心所在的类;
  (3)利用均值等方法更新该类的中心值;
  (4)对于所有的c个聚类中心,如果利用(2)(3)的迭代法更新后,值保持不变,则迭代结束,否则继续迭代.
  该算法的最大优势在于简洁和快速.算法的关键在于初始中心的选择和距离公式.
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-05-13
其实我猜你想问的是怎么改进k-means算法,可以摆脱手工指定k值。实质上通过算距离达到聚类的算法是必须要手工指定一个值的,也就是说需要一个参照。
不需要制定聚类个数的聚类算法,例如:DBSCAN
第2个回答  2018-10-14
需要的
from sklearn.cluster import KMeans
est = KMeans(n_clusters=10)
clusters = est.fit(digits.data)
相似回答