使用python和DBSCAN聚类高维数据

Ekg*_*ren 7 python cluster-analysis data-mining n-dimensional dbscan

我有一个1000维的数据集,我试图用Python中的DBSCAN集群数据.我很难理解选择哪个指标以及为什么.

有人可以解释一下吗?我应该如何决定要设置的值eps

我对数据的更精细结构感兴趣所以min_value设置为2.现在我使用sklearn中为dbscan预设的常规度量,但是对于小的eps值,例如eps<0.07,我得到一些簇但是错过了很多点和较大的值我得到几个较小的簇和一个巨大的.我确实理解一切都取决于手头的数据,但我对如何以连贯和结构化的方式选择eps值以及选择哪些指标感兴趣!

我已经阅读了这个问题以及有关10个维度的答案我有1000个:)而且我也不知道如何评估我的度量标准所以如果有更详细的解释那么会很有趣:评估你的指标!

编辑:或者有关使用现有python实现处理高维数据的其他聚类算法的提示.

Ano*_*sse 7

首先,minPts=2你实际上并没有做 DBSCAN 聚类,但结果会退化为单链接聚类

你真的应该使用minPts=10或更高。

不幸的是,您没有费心告诉我们您实际使用的距离度量标准是什么!

Epsilon 在很大程度上取决于您的数据集和指标。在不知道参数和您的数据集的情况下,我们无法在那里为您提供帮助。您是否尝试绘制距离直方图以查看哪些值是典型的?这可能是选择此阈值的最佳启发式方法:查看距离直方图(或其样本)的分位数。

但是,请注意 OPTICS 确实去掉了这个参数(至少当你有一个正确的实现时)。使用 Xi 方法提取集群时,您只需要 epsilon 大到不会切割您感兴趣的结构(并且小到足以获得您想要的运行时间 - 越大越慢,但不是线性的)。Xi 然后给出了被认为是显着的距离的相对增加。