0
我正在玩scipy的kmeans2算法,直到我发现问题。请看下面的代码:当使用minit ='矩阵'时,scipy的kmeans2算法是否也会权衡初始质心集?
x = np.array([[0.1, 0.0], [0.0, 0.1], [1.1, 1.0], [1.0, 1.1]])
c = np.array([[3,3], [4, 4]])
kmeans2(x, c, minit = 'matrix', iter=100)
你会想到这个代码(而迂回)刚刚收敛于具有以下重心的解决方案:[0.05, 0.05]
和[1.05, 1.05]
。 但是,代码返回此:
(array([[ 0.55, 0.55],
[ 4. , 4. ]]), array([0, 0, 0, 0], dtype=int32))
这似乎是K-means算法寻找新的重心发生时,其最初的重心考虑。为什么是这样?我怎样才能防止这种情况发生?