如何获取Python中每个群集的半径或直径?

时间:2019-09-13 22:43:36

标签: python numpy cluster-analysis

我有四个已定义的群集,但我不知道如何获取每个群集的半径或直径。不知道OpenCV或Numpy中是否有功能可以做到这一点。

model = KMeans(init=centers, n_clusters=4, max_iter = 50)
model.fit(x)

2 个答案:

答案 0 :(得分:0)

这可能很有帮助Scipy Spatial distancescipy.spatial.distance.cdist计算两个输入集合的每一对之间的距离。因此,应用于单个群集本身时,Cdist中的最大距离就是群集的直径(如果您知道群集是圆形或半圆形的话)

答案 1 :(得分:0)

由于k-means均未使用,因此您必须自己计算这些。

实际上,您首先必须自己定义

一个易于计算的定义是,半径是距聚类中心的最大距离(由k均值确定),并且直径是半径的两倍。该模型易于计算,并且与k均值的聚类中心一致。

这是最佳选择吗?不可以。K-means不会尝试最小化半径。它最小化平方距离,因此甚至不最小化平均(也不是最大)欧几里德距离。但是它很容易计算机,并且因为您使用k-means,所以用这种方式进行操作最有意义。

或者,您可以将直径定义为聚类中任意两个点的最大距离,将半径定义为其一半。但是随后您将不知道该圆的中心在哪里,以及是否真的可以在数据周围绘制这样的圆,或者数据点是否为奇形。