我正在实现一个需要对地理点进行聚类的项目。OPTICS算法似乎是一个非常好的解决方案。它只需要2个参数作为输入(MinPts和Epsilon),分别是将它们视为一个簇所需的最小点数,以及用于比较两个点是否在同一簇中的距离值。我的问题是,由于点的种类繁多,我无法设置固定的epsilon。看看下面的图片。相同的点结构但不同的尺度会产生非常不同的结果。假设设置MinPts=2和epsilon=1Km。在左边,算法会创建2个簇(红色和蓝色),但在右边它会创建一个包含所有点的单个簇(红色),但我想在右边也获得2个簇。所以我的问题是:是否有任何方法可以动态计算epsilon值以获得此结果?编辑20
我正在寻找一个不错的OPTICS的实现。Python中的算法。我将使用它来形成基于密度的点簇((x,y)对)。我正在寻找可以接收(x,y)对并输出集群列表的东西,其中列表中的每个集群都包含属于该集群的(x,y)对列表。 最佳答案 我不知道OPTICS的完整和精确的Python实现。此处发布的链接似乎只是OPTICS想法的粗略近似。它们也不使用索引进行加速,因此它们将运行在O(n^2)甚至更可能是O(n^3)。除了显而易见的想法之外,OPTICS还有许多棘手的事情。特别是,建议使用relative阈值(“xi”)而不是此处发布的绝对阈
我正在寻找一个不错的OPTICS的实现。Python中的算法。我将使用它来形成基于密度的点簇((x,y)对)。我正在寻找可以接收(x,y)对并输出集群列表的东西,其中列表中的每个集群都包含属于该集群的(x,y)对列表。 最佳答案 我不知道OPTICS的完整和精确的Python实现。此处发布的链接似乎只是OPTICS想法的粗略近似。它们也不使用索引进行加速,因此它们将运行在O(n^2)甚至更可能是O(n^3)。除了显而易见的想法之外,OPTICS还有许多棘手的事情。特别是,建议使用relative阈值(“xi”)而不是此处发布的绝对阈