将新文档添加到现有集群中

时间:2021-02-05 22:52:49

标签: python-3.x machine-learning data-science cluster-analysis k-means

我正在对大型数据集进行聚类(kmeans)。现在想将新数据添加到现有集群中。

这是我的想法:

  1. 计算新数据点与所有质心的欧几里德距离,并找到这些距离中的最小值。

  2. 检查最小距离是否小于阈值。如果为真,我们将新数据点分配给相应的集群。然后,更新该簇的簇中心。

  3. 如果为 False,则创建一个新集群并将新数据点指定为其中心。此外,数据点成为集群的一部分。

在第 2 步中,我应该使用的阈值是多少。请分享您的想法。

我在想,通过计算与每个集群的集群内距离并取与它们的最大距离将是我的阈值。

我正在关注文章here

1 个答案:

答案 0 :(得分:0)

您不能使用诸如轮廓分数之类的内部验证来代替阈值来查看您是否需要将集群数量加一,或者只是将新数据点拟合到现有集群之一中?

而且,关于您对阈值的建议,假设您有两个彼此远离的簇 C1 和 C2(假设它们的中心之间的距离为 10),并且它们的中心与最远成员之间的距离为 1 和 1.1 .现在,您有一个新点,它与 C1 的(更新的或原始的)中心的距离为 1.2。你叫什么?由于它比 1 稍大,但同时又大于 1.1,因此您只需将其放入一个新集群中(?!)。如您所见,这不是一个合理的方法。

如果您坚持使用阈值,这里有一个想法:您可以找到新点到最近中心(称为 d1)和下一个最近中心(称为 d2)的距离。例如,如果 d1/d2 小于 0.5(阈值),则可以说新点属于最近的组,如果不是,则表示您无法确定它属于哪个组。所以,你然后创建一个新的集群