【问题标题】:Scikit-Learn DBSCAN creating a cluster with two highly disconnected islandsScikit-Learn DBSCAN 创建一个具有两个高度断开的岛的集群
【发布时间】:2020-06-07 09:09:57
【问题描述】:

在这种情况下:一张图片值一千字 ..

Hello Purple Cluster!

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

  • 100 个数据点
  • 使用自定义距离度量来生成预先计算的距离矩阵
  • 自定义距离度量很简单:只考虑r0(x-距离)

除了一对无赖的紫色点之外的所有东西看起来都完全符合预期。那紫色星团是如何越过黄墙并占据左上角那对无赖的点的?

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

这里是:

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

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

【问题讨论】:

  • >>> “已验证恰好有三个簇”。不同的算法可能对什么是集群有不同的看法。
  • @SergeyBushmanov 验证是通过 DBSCAN 生成的输出:我没猜。将其添加到问题中以明确。
  • 这仅表示 DBSCAN 认为这两个点不同足以形成一个单独的集群。
  • @SergeyBushmanov 你在说什么?这两个点被添加到最右边的那个集群中。当隔壁有 2 个其他集群时,会发生这种情况吗?您似乎误解了这两点位于某个 fourth 集群中。
  • 不是我说的,是 DBSCAN。

标签: python scikit-learn dbscan


【解决方案1】:

这很有趣。我添加了簇号,我们看到紫色-1

这意味着 NO CLUSTER 。因此,左上角的这对可以与最右边的一对“共享”同一个“集群”:它们实际上并不共享 集群,而只是共享 sckit-learn 用于的标识符没有集群。

【讨论】:

  • 你玩过epsilon吗?
  • 哦,是的 - 这是毕竟核心调整参数。现在上面说得通了:我只需要了解紫色点是非聚类的
猜你喜欢
  • 2014-03-26
  • 2014-05-22
  • 2021-09-06
  • 2018-09-01
  • 2016-01-16
  • 2018-11-21
  • 2015-02-13
  • 1970-01-01
  • 2014-09-11
相关资源
最近更新 更多