【问题标题】:DBSCAN kdist-Plot multiple valleysDBSCAN kdist-绘制多个山谷
【发布时间】:2023-03-23 09:09:02
【问题描述】:

我正在使用 Sander 等人。 1998 确定 MinPts 和 epsilon 以在我的数据集上使用 DBSCAN。 正如 Sanders 等人所建议的那样, minpts=dim*2-1=k (在我的例子中是 9 维 --> minpts=k=17)。 在论文中应该选择“第一个山谷”。我可以看到两个山谷,但哪个是第一个?你会为 epsilon 选择什么值? kdistplot_with_duplicates

由于 Sanders 还建议仅在没有重复项的情况下才应使用此方法,而没有重复项:(尽管我认为在这种情况下这无关紧要) kdistplot_without_duplicates。 哪个山谷应该被认为是“第一个”山谷?

使用的代码:

ns = 17
nbrs = NearestNeighbors(n_neighbors=ns, metric='euclidean').fit(data)
distances, indices = nbrs.kneighbors(data)
distanceDec = sorted(distances[:,ns-1], reverse=True)
plt.plot(list(range(1,683+1)), distanceDec)

【问题讨论】:

    标签: python parameters scikit-learn cluster-analysis dbscan


    【解决方案1】:

    这表明可能存在集群的层次结构,或具有不同密度的集群。

    在这种情况下,DBSCAN 上的单个阈值是不够的。您可以尝试两次聚类,使用两个不同的阈值。或者您使用分层版本,例如 OPTICS 和 HDBSCAN。最近,人们对 HDBSCAN 非常满意,我在 OPTICS 方面取得了更好的结果(我相信有一个很好的理由为什么,即我希望边界点成为集群的一部分)

    【讨论】:

      【解决方案2】:

      是左边的山谷(epsilon 的最小值):有了这个值,左边的所有点都是非聚类的(认为是噪声),右边的所有点都会聚类。

      您可以阅读原文DBSCAN paper,特别是参见图 4 以更好地理解其原理。

      【讨论】:

      • 是的,据说这被认为是噪音。如果它在核心点附近,它应该仍然能够最终形成一个集群。
      猜你喜欢
      • 1970-01-01
      • 2020-11-26
      • 2017-02-08
      • 2014-09-18
      • 2020-07-29
      • 2011-10-13
      • 2019-02-08
      • 2017-09-22
      • 2020-10-28
      相关资源
      最近更新 更多