我使用的是Shift-means聚类(https://scikit-learn.org/stable/modules/clustering.html#mean-shift),其中聚类的标签是从以下来源获得的:https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.NearestNeighbors.html
但是,不清楚如何生成簇的标签(0,1,...)。似乎标签0是具有更多元素的群集。这是一般规则吗?
其他算法如何工作?是“随机”意义上的吗?还是检测0聚类的更大聚类的算法?
谢谢!
PS:按照此规则订购标签很容易,我的问题是理论上的。
答案 0 :(得分:0)
在许多情况下,群集顺序取决于初始化。如果提供初始值,则将保留此顺序。
如果不提供此类初始值,则顺序通常基于数据顺序。例如,第一项可能属于第一类(在某些算法(例如DBSCAN)中保留了噪声)。
现在的数量(集群大小)有一个有趣的效果:假设您的数据是随机排序的(例如,不是由某些合成数据生成过程排序的),则第一个元素更有可能属于“最大”元素集群,因此即使按照“随机”顺序,该集群也很可能排在第一位。
现在,在sklearn的均值漂移(我认为最终分配规则中存在错误)中,作者显然决定按“强度”进行排序,但我不记得原始论文中的任何此类规则。 https://github.com/scikit-learn/scikit-learn/blob/7813f7efb/sklearn/cluster/mean_shift_.py#L222