集群算法的标签输出是否按特定顺序排序? (python, scikit 学习)

Are the labels-output of cluster algorithms ordered in a certain order? (python, scikit learn)

我正在使用 Shift 均值聚类 (https://scikit-learn.org/stable/modules/clustering.html#mean-shift) in which the labels of clusters are obtained from this source: https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.NearestNeighbors.html

然而,目前尚不清楚簇(0,1,...) 的标签是如何生成的。看起来,标签 0 似乎是具有更多元素的簇。这是一般规则吗?

其他算法是如何工作的?是 "random" 的意思吗?或背后的算法为 0 簇检测更大的簇?

谢谢!

PS:按这个规则排序标签很容易,我的问题比较理论化。

在很多情况下,簇顺序取决于初始化。如果您提供初始值,则此顺序将被保留。

如果您不提供此类初始值,通常会以数据顺序为准。例如,第一项可能属于第一个聚类(在某些算法中保留噪声,例如 DBSCAN)。

现在数量(簇大小)有一个有趣的影响:假设你的数据是随机排序的(而不是,例如,由一些合成数据生成过程排序)那么第一个元素更有可能属于 "largest" 簇,因此即使按 "random" 顺序,此簇也最有可能排在第一位。

现在在 sklearn 的 mean-shift 中(我认为它在最终分配规则中包含错误)作者显然决定按 "intensity" 排序,但我不记得任何这样的规则原始论文。 https://github.com/scikit-learn/scikit-learn/blob/7813f7efb/sklearn/cluster/mean_shift_.py#L222