【问题标题】:Updating centroid values k-means clustering Python更新质心值 k-means 聚类 Python
【发布时间】: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


    【解决方案1】:

    在 Python 中,与大多数编程语言一样,数组从索引 0 开始。因此,您将跳过第一列,并在最后一列之外进行访问。

    您可以使用array[array[:,-1]==i,:-1],但我建议将输入数据和标签分开

    【讨论】:

    • 感谢您的帮助。我了解python中的索引。我正在努力解决的问题是为什么我没有重写 AllData 的前 4 行?
    • 什么是centroids?它不在您的代码中。您可能对前四行使用引用而不是副本?
    猜你喜欢
    • 2020-02-21
    • 1970-01-01
    • 2018-04-27
    • 2019-05-04
    • 2021-11-25
    • 2019-02-03
    • 2016-06-27
    • 2022-01-23
    • 2018-05-09
    相关资源
    最近更新 更多