【问题标题】:Writing ELKI DBSCAN convex hull of clusters to file将簇的 ELKI DBSCAN 凸包写入文件
【发布时间】:2013-05-08 08:17:22
【问题描述】:
我已经开始使用 ELKI 进行数据分析,但是我似乎无法做的一件看似简单的事情是在运行 DBSCAN 后将计算出的集群凸包输出到文件中。我可以通过可视化 gui 可视化凸包,但无法生成 KML 文件。我还能够将我的聚类结果写入一个文件夹(使用 ResultWriter resulthandler),但是当我设置 KMLOutputHandler 时没有生成文件。我在日志窗口中没有收到错误消息(即使详细参数设置为 true)。
在 ELKI 中生成 KML 文件有技巧吗?任何人都可以完成执行此操作的步骤吗?
任何帮助将不胜感激。
(顺便说一句,是否可以使用 ELKI 为 DBSCAN 结果生成 alpha 形状?如果可以,必须调整哪个参数?)
【问题讨论】:
标签:
cluster-analysis
convex-hull
dbscan
elki
【解决方案1】:
所以这实际上是一个很多问题......
-
Cunvex hulls:它们在 ELKI 中用于可视化,但不被视为输出结果的一部分,因此它们不会保存到文件中。您可以使用的一个技巧是将可视化另存为 SVG 并从该文件中提取它们,但它们将位于不同的坐标系中。
其中一个原因是凸包仅适用于 2D 欧几里得空间 - 我想您想将其用于空间数据,但由于曲率,它实际上可能碰巧没有返回正确的凸包地球表面的。此外,许多数据集将具有更高的维度。
但是,您当然可以查看源代码并调用凸包算法,然后将结果写入您喜欢的输出格式。通常,正如您需要花时间进行预处理一样,您还需要自定义输出。
这让我想到了第二个问题。 KMLResultHandler 与 ELKI 0.4.0 的发布密切相关:空间异常值检测:数据、算法、可视化。
这几乎总结了这个类的作用:可视化空间异常值检测。例如,它目前(还)不包含可视化空间数据集群的代码。不幸的是,为了从课程中获得输出,您需要确保一些限制。本质上,如果它找到可以相互映射的Polygon 关系和OutlierResult,它会将其输出到KML。
还没有一个可以将任意结果写入 KML 的类。它可能还需要更多的文档。更通用的输出工具的贡献将不胜感激;但是向 KML 提供可自定义、自动、通用的输出真的很难。特别是,如果有人不处理纬度-经度数据,但例如,您可能最终还必须包含投影功能。 UTM 预测数据。
因此,我建议查看该类的源代码并根据您的需要对其进行自定义。在我看来,KML 的可视化总是需要大量的自定义。
要生成 alpha 形状(只有船体,而不是扩展的 alpha 形状 - DBSCAN 的最佳可视化可能仅包括核心点的 alpha 形状,扩展一个 epsilon 半径,然后应该包括边界点。这在愿望清单上,但未实现),您只需将 -hull.alpha 参数设置为所需的 alpha 值。请注意,这发生在可视化投影中,而不是原始数据中。如果轴的缩放比例不同,alpha 形状的外观会有所不同。同样,您可能有兴趣在原始数据向量上使用 AlphaShape 类,而不是导出投影的可视化。然后您可以轻松地将生成的Polygons 写入您的自定义可视化。
如果您使用集群的 alpha 形状(或凸包)实现此类 KML 可视化,如果您能将其贡献给 ELKI 以使其也可供其他人使用,我将不胜感激。谢谢。