DBSCAN kdist-绘制多个谷

我正在使用Sander等人。 1998 确定MinPts和epsilon在我的数据集上使用DBSCAN。 正如桑德斯(Sanders)等人所建议的那样,分钟数= dim * 2-1 = k(在我的情况下为9维->分钟数= 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)
jenny013 回答:DBSCAN kdist-绘制多个谷

它是左边的山谷(ε的最小值):有了这个值,左边的所有点都将变得不聚簇(被认为是噪声),右边的所有点将被聚类。

您可以阅读原始的DBSCAN paper,尤其是请参见图4,以更好地理解其原理。

,

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

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

本文链接:https://www.f2er.com/3089542.html

大家都在问