我正在使用 ELKI 以分层方式对使用 OPTICSXi 的地理位置数据集进行聚类。 算法执行的结果是一组文件。
文件的内容可以是:
# Cluster: nameOfCluster
# OPTICSModel
# Parents: nameOfParents (this element doesn't exist for the root cluster)
# Children: nameOfChild_0, nameOfChild_1 ... nameOfChild_n, (optional)
ID=1 lat0 lon0 reachability=?
ID=3062 lat1 lon1 reachability=1.30972586 predecessor=1
ID=7383 lat2 lon2 reachability=2.56784445 predecessor=3062
ID=42839 lat3 lon3 reachability=4.05510623 predecessor=1
我不明白每个文件中的元素(在示例中有四个元素)是否属于同一簇,或者可能属于不同的簇。在后一种情况下,我需要编写一些构建集群的代码(例如查看每个节点的前任节点),或者我可以在 Elki 中指定一些参数来获取每个集群?
最佳答案
默认情况下,ELKI 将生成一个每个集群一个文件的目录。除非输出文件已经存在,在这种情况下,您将把所有簇写入同一个文件中,并用注释分隔,如上所示。
对于分层结果,例如 OPTICSXi
,您还应该将子集群的所有成员视为父集群的一部分。这些集群嵌套到父级中。它们在父级中不重复,以减少输出中的冗余。
将 OPTICSXi
的输出与 OPTICS
输出进行比较。 Xi 方法的作用是根据可达距离的突然下降为您分割数据。 Xi 的所有簇都应该是原始 OPTICS 簇顺序的子序列。
就您的情况而言,如果您的集群只有 4 个元素,您可能选择的 minPts
太小。 (不过,您可能已经截断了文件,或者子簇中可能有很多元素;因此输出可能没问题)。
另请注意,您通常需要验证是否希望集群的第一个元素属于该集群;最后一个元素类似。 OPTICSXi
往往会在第一个元素上出错,但不是以系统的方式出错,修复起来很简单。第一个和最后一个元素是那些弥合从一个集群到另一个集群的差距的元素。您确实应该手动验证这些(这是不选择太小的 minPts
的一个很好的理由)。
我强烈建议为您的特定用例构建/使用可视化。然后,您可以将这样的集群加载到可视化中,并直观地检查结果对您是否有意义。我在地理数据上使用了 OPTICSXi
,这对我来说非常有效。
关于data-mining - OPTICSXi - ELKI 结果写入器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20357625/