【发布时间】:2018-09-19 09:43:45
【问题描述】:
我正在尝试使用 python 从头开始实现 k-means 聚类算法。我在更新每个集群的质心值时遇到问题。下面的代码显示了我到目前为止的位置。我最初将每个数据点聚集到 k 个集群中的一个。 AllData 包含 329 行;每行是一个单词,后跟 300 个特征,后跟它被分配到的集群的编号(值 1 到 4)。我在我的循环中尝试做的是首先创建一个数组 A,它只保存 AllData 中已分配给第一个集群的行。然后我想取 A 中每个特征列的平均值并将质心更新为此。循环应该对所有 4 个集群迭代地执行此操作。
k = 4
i = 1
while (i <= k):
A = AllData[:,1:301][AllData[:,301] == i]
centroids[i-1:i,:] = A.mean(axis=0)
i = i + 1
centroids 数组中 4 行的值正在正确更新。我遇到的问题是 4 个更新的质心值也在重写 AllData 的前 4 行。我不希望这种情况发生。 AllData 数组应保持不变。任何帮助将不胜感激!
【问题讨论】:
标签: python cluster-analysis k-means