当前位置: 首页 > 知识库问答 >
问题:

更新质心值k-means

高墨一
2023-03-14

我正在尝试使用python从头开始实现一个k-means聚类算法。我在更新每个簇的质心值时遇到问题。下面的代码显示了到目前为止我所处的位置。我最初将每个数据点聚类为k个聚类中的一个。所有数据包含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

质心数组中4行的值正在正确更新。我遇到的问题是,4个更新的形心值也重写了AllData的前4行。我不想发生这种事。AllData数组应保持不变。任何帮助将不胜感激!

共有1个答案

葛胡媚
2023-03-14

在Python中,与大多数编程语言一样,数组以索引0开头。因此,您将跳过第一列,并访问最后一列以外的内容。

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

 类似资料:
  • 我已经实现了一个函数,在运行K-Means聚类算法后,找到距离每个质心最近的数据点。我想知道是否有一个函数可以让我找到距离每个质心最近的M个点。

  • 我有一个Java程序,它将使用我从这里找到的K-Means算法将坐标聚类成2组。我已经成功地获得了每个组中的聚集元素,但是我不确定如何检索每个集群的形心位置。 这是我的节目: 有没有一种方法可以在聚类后检索质心位置?

  • 我的表格结构如下: 现在,要进行大规模更新,我将执行以下操作: 但是,我们不应该盲目地将状态设置为1,因为有一个条件。如果列的值等于

  • 本文向大家介绍k-means除了随机选择初始质心,还有什么方法?相关面试题,主要包含被问及k-means除了随机选择初始质心,还有什么方法?时的应答技巧和注意事项,需要的朋友参考一下 多次运行,每次使用一组不同的初始质心,计算平方误差,选择最小的作为初始质心 使用层次聚类,找到k个簇的质心,以这个质心作为初始质心 先随机选择一个初始质心,然后找到后继质心,即找到距离这个质心最远的点作为新的质心,这

  • 问题内容: 我正在尝试使用选定的初始质心进行k均值聚类。它说在这里 指定您的初始中心: 如果通过,它应该是形状(的,)并给出初始中心。 我在Python中的代码: 返回错误: 并返回相同的初始中心。任何想法如何形成初始中心以便可以被接受吗? 问题答案: 的默认行为是使用不同的随机质心多次初始化算法(即Forgy方法)。然后,随机初始化的数量由参数(docs)控制: n_init :int,默认值:

  • 我想从二值图像中得到圆形状的质心,但输出给出了不止一个质心。我使用的是opencv web教程文档中关于图像时刻和修改的代码。供参考,我使用的是C++API OpenCV。 输出结果是: 我预计,文本输出可能会从3个轮廓中给出3个质心,但实际上是7个轮廓(轮廓[0],...,轮廓[6])。