我正在尝试在我的程序中使用ELKI 的层次聚类的 SLINK 实现。
我有一组需要集群的对象(我自己的类型)。为此,我在聚类之前将它们转换为特征向量。
这就是我目前如何让它运行并产生一些结果(代码在 Scala 中):
val clusterer = new SLINK(CosineDistanceFunction.STATIC, 3)
val connection = new ArrayAdapterDatabaseConnection(featureVectors)
val database = new StaticArrayDatabase(connection, null)
database.initialize()
val result = clusterer.run(database).asInstanceOf[Clustering[_ <: Model]]
现在,结果是 aClustering
包含 type 的元素Model
。我可以输出它们,但我不知道如何理解这个结果,特别是因为SLINK
返回的模型类型DendrogramModel
似乎不可参数化。
具体来说,如何将结果链接回我的原始元素(我featureVectors
之前创建变量的元素)?
我假设我需要创建某种自定义模型,或者通过初始化和执行算法以某种方式维护与原始元素的链接以从结果中检索。不过,我找不到从哪里开始。
我知道不鼓励将 ELKI 嵌入到自己的程序中。但是,似乎以其他方式调用 ELKI 并没有什么不同:我需要在程序运行期间对结果进行聚类并将结果映射回我的对象。