【问题标题】:How to estimate eps using knn distance plot in DBSCAN如何在 DBSCAN 中使用 knn 距离图估计 eps
【发布时间】:2018-06-09 04:00:15
【问题描述】:

我有以下代码来估计 DBSCAN 的eps。如果代码没问题,那么我已经获得了knn distance plot。代码是:

ns = 4
nbrs = NearestNeighbors(n_neighbors=ns).fit(data)
distances, indices = nbrs.kneighbors(data)
distanceDec = sorted(distances[:,ns-1], reverse=True)
plt.plot(indices[:,0], distanceDec)

其中data 是像素位置(行和列)的数组。我已经获得了一个情节,但我不知道如何确定eps。根据DBSCAN论文,

阈值点是第一个山谷中的第一个点 排序的k-dist图

我不知道如何在代码中实现它。此外,ns = 4 是我的minPts 还是有什么方法可以从eps 估计minPts

【问题讨论】:

    标签: python image-processing cluster-analysis knn dbscan


    【解决方案1】:

    据我所知,这是由人类视觉确定的。

    自动化似乎不起作用。

    或者您可以使用 OPTICS。

    【讨论】:

    • 您可能正在查看 n-1 最近的邻居,或者,我假设您的代码将始终返回 0 作为第一个距离。此外,您为情节选择的 x 对我来说没有意义。
    【解决方案2】:

    使用

    plt.plot(list(range(1,noOfPointsYouHave+1)), distanceDec)
    

    你会得到一个肘部图。曲线急剧变化的距离是您的 epsilon。

    如果你愿意,你也可以设置 reverse=False。

    【讨论】:

      猜你喜欢
      • 2013-02-06
      • 1970-01-01
      • 2017-01-20
      • 2021-08-03
      • 2020-10-23
      • 2018-07-06
      • 1970-01-01
      • 2018-02-14
      相关资源
      最近更新 更多