我在ELKI环境中使用OPTICS实现时遇到问题。我在DBSCAN实现中使用了相同的数据,它就像一个魅力。可能我错过了一些带参数的东西,但我无法弄明白,一切似乎都是正确的。
数据是一个简单的300х2矩阵,由3个簇组成,每个簇有100个点。
DBSCAN结果:
MinPts = 10,Eps = 1
OPTICS结果:
MinPts = 10
答案 0 :(得分:4)
你显然已经找到了解决方案,但这是长篇故事:
ELKI中的OPTICS
类仅计算集群顺序/可达性图。
为了提取群集,您有不同的选择,其中一个(原始OPTICS出版物中的一个)在ELKI中可用。
因此,为了在ELKI中提取集群,您需要使用OPTICSXi
算法,该算法将使用OPTICS
或基于索引的DeLiClu
来计算集群顺序。
在ELKI中将其拆分为两部分的原因可能是您可以一方面实现另一个用于提取集群的逻辑,另一方面可以实现不同的方法,如DeLiClu
来计算集群顺序。这与ELKI的模块化架构很吻合。
答案 1 :(得分:4)
我们希望有些学生随着时间的推移,将其他群集提取方法作为小型学生项目。它们对我们的研究不是必不可少的,但对于想要了解ELKI入门的学生来说,它们是很好的任务。
ELKI是一个快速发展的项目,它源于社区贡献。我们很高兴看到您贡献一些代码。我们知道代码库并不容易入手 - 它相当大,而且实现的通用性和对索引结构的支持使得它有点难以入手。我们尝试添加Tutorials来帮助您入门。一旦你习惯了它,你将真正从架构中受益:你的算法获得索引和任意距离函数的好处,而如果你从头开始实现,你可能只支持欧几里德距离,没有索引加速。 / p>
看到你在OPTICS中挣扎,我会尝试在新的一年里写一篇OPTICS教程。特别是,OPTICS可以从使用适当的索引结构中获益良多。