我有一个1000维的数据集,我试图用Python中的DBSCAN集群数据.我很难理解选择哪个指标以及为什么.
有人可以解释一下吗?我应该如何决定将eps设置为什么值?
我对数据的更精细结构感兴趣,因此min_value设置为2.现在我使用在sklearn中为dbscan预设的常规度量,但是对于小的eps值,例如eps< 0.07,我得到了一些聚类但是错过了许多点,对于更大的值,我得到了几个更小的聚类和一个巨大的聚类.我确实理解一切都取决于手头的数据,但我对如何以连贯和结构化的方式选择eps值以及选择哪些指标感兴趣! 我已经阅读了this question以及关于10个维度的答案我有1000个:)而且我也不知道如何评估我的度量标准所以如果有更详细的解释那么它将会很有趣:评估您的指标!
编辑:或者有关使用现有python实现处理高维数据的其他聚类算法的提示.
最佳答案
首先,使用minPts = 2,您实际上并没有进行DBSCAN聚类,但结果将退化为单链接聚类.
原文链接:https://www.f2er.com/python/439520.html你真的应该使用minPts = 10或更高.
不幸的是,您没有费心去告诉我们您实际使用的距离指标!
Epsilon在很大程度上取决于您的数据集和指标.在不知道参数和数据集的情况下,我们无法帮助您.您是否尝试绘制距离直方图以查看哪些值是典型值?这可能是选择此阈值的最佳启发式方法:查看距离直方图(或其样本)的分位数.
但请注意,OPTICS确实摆脱了这个参数(至少在你有正确的实现时).使用Xi方法提取簇时,您只需要足够大的epsilon来切割您感兴趣的结构(并且足够小以获得您想要的运行时间 – 较大但较慢,尽管不是线性的). Xi然后给出了被认为是重要的距离的相对增加.