我想知道k-means和k-means++算法的区别,如果有人了解k-means++算法的流程,你能举例说明吗?虽然,我了解K-Mean算法,但对于我来说,找到如何实现K-Means++算法是很困难的,因为我不清楚该算法的工作流程。
谢谢大家。
最佳答案
说你想知道k-means和k-means++之间的区别是不准确的。因为,这两种算法不具有可比性,而是相互结合。
Kmeans++维基百科的定义:
k-means++是一种为k-means聚类算法选择初始值(或“种子”)的算法
这样的算法的存在是需要的,因为k-均值在性能和精度方面存在问题(取决于分析数据和整个预处理步骤的方式)。
关于你的问题:
找到如何实现K-Means++算法对我来说很困难,因为我不清楚该算法的工作流程。
从数据集中的一个随机点开始,然后计算集中每个点与所选点之间的距离(欧几里德距离可以是您的选择之一)。然后,使用weighted probability distribution随机选择一个新的数据点作为新的中心,其中x点是用probability proportional到d(x)2选择的。然后重复同样的操作(不是从随机点开始),直到达到所需的k
簇(k
应该作为参数传递给算法)。
在获得k
集群之后,可以继续执行k-means
。
请注意,这主要来自wikipedia,但我的观点是,您将k-means++作为k-means的替代品,而k-means并不是上述定义所说的那样。
最后,k-means++足以帮助克服k-means存在的一些问题,但是通过将集群的数量(k
)作为输入参数传递给它,它不再具有可伸缩性。不过,如果你感兴趣的话,还有另一个版本的k-means称为k-means2(我没有搜索其他来源),它可能会克服可伸缩性问题。
关于algorithm - K-Means++的流程是什么,我想确切了解K-Mean和K-Means++之间的区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22521909/