set cluster means to equal k randomly generated points
while not converged:
# expectation step:
for each point:
assign it to its expected cluster (cluster whose mean it is closest to)
# maximization step:
for each cluster:
# maximizes likelihood for cluster mean
set cluster mean to be the average of all points assigned to it
PyCluster的手册提到了一个不同于您所询问的优化问题。当您询问如何确定最佳集群数量时,本手册讨论如何在给定集群总数的情况下找到最佳集群。要理解的概念是k-均值,这是一种EM(期望最大化问题)算法,不保证一个最优的聚类解决方案(在这种情况下,一个最优的聚类解决方案可以定义为使每个数据点之间的距离平方和与其聚类平均值之和最小的聚类分配)。k-means的工作方式是:
k-means算法会在给定初始值的情况下输出最优解,但不一定能在全局范围内找到最佳聚类解。这是手册在第13页底部所指的内容。手册上说kcluster例程将执行EM(正是k-means算法)多次并选择最佳的聚类。它从未涉及到寻找最佳簇数的问题。在
也就是说,您可以使用一些启发式方法来确定最佳集群数量(请参见示例Wikipedia):
相关问题 更多 >
编程相关推荐