Scikit-Learn DBSCAN 创建一个包含两个高度断开的岛的集群

Scikit-Learn DBSCAN creating a cluster with two highly disconnected islands

在这种情况下:一图胜千言 ..

你好紫色星团!

这是怎么发生的?首先 - 描述 DBSCAN 的数据和设置:

除了那对 流氓紫色点 之外的所有东西看起来都完全符合要求。那个紫色星团是如何越过 黄墙 并声称左上角那对流氓点的?

更新 经验证正好是三个集群。 IE。这不是选择三种颜色来表示四个集群的错误。 验证直接来自 dbscan 预测输出(不是我的一些假设):

这里是:

NumClusters is 3 counts are (array([-1,  0,  1]), array([ 8, 67, 25]))

另一个更新 澄清一下:2 个紫色点被添加到最右边的集群(也是紫色)。它们不是第四集群。所以问题是 - 为什么这些点被添加到 最远 集群而不是附近的绿色和黄色集群?

这很有趣。我添加了 cluster number,我们看到 purple-1

这意味着 NO CLUSTER 。这就是左上角的一对 "share" 与最右边的那对 "cluster" 相同的原因:它们实际上并不共享 集群 ,而只是sckit-learn 用于 NO 集群的标识符。