如何使用DBSCAN中的knn距离图来估计eps

时间:2017-12-28 15:41:36

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

我有以下代码来估算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。根据{{​​1}}论文,

  

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

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

2 个答案:

答案 0 :(得分:2)

使用

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

你会得到一个肘部情节。曲线发生急剧变化的距离是你的epsilon。

如果您愿意,也可以使reverse = False。

答案 1 :(得分:0)

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

自动化似乎无法发挥作用。

或者您可以使用OPTICS。