我正在寻找一个不错的 OPTICS 的实现。 Python中的算法。我将使用它来形成基于密度的点簇((x,y) 对)。
我正在寻找可以接收 (x,y) 对并输出集群列表的东西,其中列表中的每个集群都包含属于该集群的 (x,y) 对列表。
最佳答案
我不知道 OPTICS 的 完整 和精确的 Python 实现。此处发布的链接似乎只是 OPTICS 想法的粗略近似。它们也不使用索引进行加速,因此它们将运行在 O(n^2)
甚至更可能是 O(n^3)
。
除了显而易见的想法之外,OPTICS 还有许多棘手的事情。特别是,建议使用 relative 阈值(“xi”)而不是此处发布的绝对阈值来完成阈值处理(此时结果将近似于 DBSCAN!)。
原始 OPTICS 论文包含将算法输出转换为实际集群的建议方法:
http://www.dbs.informatik.uni-muenchen.de/Publikationen/Papers/OPTICS.pdf
Weka 中的 OPTICS 实现基本上是未维护并且同样不完整。它实际上并不产生集群,它只计算集群顺序。为此,它复制了数据库 - 它不是真正的 Weka 代码。
ELKI 中似乎有一个相当广泛的实现。由最初发布 OPTICS 的小组在 Java 中使用。您可能想针对这个“官方”版本测试任何其他实现。
关于OPTICS(聚类)算法的 Python 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5515675/