Python:确定k-means聚类(scipy)的最高可能性质心数组

Python:确定k-means聚类(scipy)的最高可能性质心数组,python,arrays,scipy,k-means,Python,Arrays,Scipy,K Means,我正在使用k-means的scipy实现,需要一种方法来循环计算n次,记录每个循环的质心输出数组,并以最高的可能性计算输出。编辑我设置k=4,所以每个解决方案有4个元素。我需要确定最频繁出现的质心数组(即4个元素的集合) 我的质心阵列看起来像: [[ 75] [115] [163] [ 16]] [[ 75] [[ 73] [[ 75] [115] [112] [115] [163] [167] [163] [ 16]], [ 14]], [ 16]] kee

我正在使用k-means的scipy实现,需要一种方法来循环计算n次,记录每个循环的质心输出数组,并以最高的可能性计算输出。编辑我设置k=4,所以每个解决方案有4个元素。我需要确定最频繁出现的质心数组(即4个元素的集合)

我的质心阵列看起来像:

[[ 75]
 [115]
 [163]
 [ 16]]
[[ 75]  [[ 73]  [[ 75]
 [115]   [112]   [115]
 [163]   [167]   [163]
 [ 16]], [ 14]], [ 16]]
keep_count = {}
for attempt in range(n):
    get_one_of_those_arrays  <-- sorry, no idea how the function of k-means work
    for result in array:        
        if keep_count.has_key(result):
            keep_count[result] +=1
        else:
            keep_count[result] = 1
在手动运行代码时,由于k-means的随机特性,出现了4-6个解决方案。基本上,我想计算n上每个数组的出现次数,并返回最可能的数组

根据Jblasco对问题的解释进行编辑以澄清

每次算法运行时,它都会返回一个形心数组,如上面所示。运行算法3次,我会得到如下结果:

[[ 75]
 [115]
 [163]
 [ 16]]
[[ 75]  [[ 73]  [[ 75]
 [115]   [112]   [115]
 [163]   [167]   [163]
 [ 16]], [ 14]], [ 16]]
keep_count = {}
for attempt in range(n):
    get_one_of_those_arrays  <-- sorry, no idea how the function of k-means work
    for result in array:        
        if keep_count.has_key(result):
            keep_count[result] +=1
        else:
            keep_count[result] = 1
我想完成两件主要的事情:

1) 循环生成这些质心的代码
2) 确定最可能的(常见的)解决方案,在这种情况下是:

[[ 75]
 [115]
 [163]
 [ 16]]

如果我理解正确的话,你会得到n倍于你展示的数组,你要计算数组中75倍,数组中115倍,依此类推。如果这是正确的,我会想到这样的事情:

[[ 75]
 [115]
 [163]
 [ 16]]
[[ 75]  [[ 73]  [[ 75]
 [115]   [112]   [115]
 [163]   [167]   [163]
 [ 16]], [ 14]], [ 16]]
keep_count = {}
for attempt in range(n):
    get_one_of_those_arrays  <-- sorry, no idea how the function of k-means work
    for result in array:        
        if keep_count.has_key(result):
            keep_count[result] +=1
        else:
            keep_count[result] = 1

好了,现在我明白你的意思了,让我们重新开始,好吗?对类似问题的类似思维方式。我承认这不是最优雅的可能性,但我认为它是有效的,而且是直观的:

keep_count = {}
for attempt in range(n):
    array = get_one_of_those_arrays  <-- sorry, no idea how the function of k-means work
    array = tuple(array.reshape(4))
    if keep_count.has_key(array):
        keep_count[array] +=1
    else:
        keep_count[result] = 1

谢谢你的回复。我实际上在寻找最常见的4个值。我编辑了原稿。