如何编写群集以更有效地归档?

时间:2019-04-10 00:14:55

标签: python data-mining

这是一个愚蠢的问题,但基本上我使用k-means将我的数据分为不同的群集,这是针对班级项目btw的。我已经完成所有工作,但是我必须为每个输入将集群写入文件中,以便可以对其进行测试。我的实际代码运行大约需要2-3分钟,但写入文件需要大约10分钟。我有10,000个输入/输出,当前我的运行时约为n ^ 3。就分配而言,时间实际上并不重要,但是我想知道是否有人可以帮助我优化它,我知道我不知道有不同的Python迭代技巧可以加快速度。

我的k是10,所以我有10个质心,基本上我选择了数组并选择了一个质心,检查它是否包含数组,如果没有,我移到下一个,依此类推。我需要花费很长时间的每10,000个输入执行此操作。代码不是很有效

file = open("image.txt", "w")
    for point in array:
        for x in range(len(centroids)):
            for i in centroids[x]:
                if np.array_equal(point,i):
                    file.write(str(x+1)+"\n")
    file.close()

2 个答案:

答案 0 :(得分:0)

好的,让我尝试清理一些东西。发表评论,让我知道我所说的内容是否不适用。另外,如果您必须检查所有内容,则可能无法简化计算。

with open("image.txt", "w") as file:
   for point in array:
      for centroid_index, centroid in enumerate(centroids):
         for centroid_point in centroid:
            if np.array_equal(point,centroid_point):
               file.write(str(centroid_index+1)+"\n")

如果您可以为我解释arraycentroids的对象类型以及您要写入文件的内容,那么我可以提供一些更具体的方法。

答案 1 :(得分:0)

这行是个坏主意:

for point in array:

为什么遍历所有点以找到质心?

只需按索引输出它们,然后仅对形心进行迭代。