DBSCAN kdistPlot多个山谷

2024-10-02 18:27:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是Sander等人1998 to determine MinPts and epsilon to use DBSCAN on my dataset. As Sanders et all suggests minpts=dim*2-1=k (in my case 9 dimensions --> minpts=k=17). In the paper one should chose the "first valley". I can see two valleys but which one is the first one? And what value would you chose for 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)

Tags: thetomy情况onefirstduplicatesns
2条回答

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

您可以阅读原始的DBSCAN paper,特别是参见图4以更好地理解其基本原理

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

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

相关问题 更多 >