ELKI:实现自定义ResultHandler

时间:2014-08-17 06:15:54

标签: cluster-analysis data-mining elki

我需要实现自定义ResultHandler,但我对如何将自定义类实际集成到软件包中感到困惑。

我已经读过这个:http://elki.dbs.ifi.lmu.de/wiki/HowTo/InvokingELKIFromJava但我的问题是你是如何实现一个自定义结果处理程序,以便它显示在GUI中?

我能想到的唯一方法是提取elki.jar包并手动将我的自定义类插入到源代码中,然后重新震动包。但是我很确定这不是它的目的。

此外,在我的resulthandler中,我需要将所有行输出到单个文本文件,并显示每行所属的集群。关于如何实现这一目标的提示如何?

1 个答案:

答案 0 :(得分:1)

这里有两个问题。

  1. 为了通过UI(MiniGUI和命令行)使您的类可实现,这些类必须实现我们的Parameterization API。您的类 instantiable 基本上有两种选择:

    • 添加public构造函数,不带参数(用户界面将不知道如何设置参数!)
    • 添加处理参数化的内部static class Parameterizer
  2. 为了将您的类添加到自动完成(下拉菜单),这些类必须由MiniGUI / CLI /其他UI 发现。 ELKI使用两种发现方法:

    • 对于.jar个文件,它会读取META-INF/elki/interfacename个服务文件。这是一种经典的服务加载器方法;除了我们也允许订购实例。
    • 仅用于目录,ELKI还将扫描所有.class个文件,并检查它们。这主要是为了开发时间,以避免必须一直更新服务文件。出于性能原因,我们不检查.jar文件的内容;这些都应该使用服务文件。
  3. 您不需要将您的班级列入下拉菜单 - 您始终可以输入完整的班级名称。如果这不起作用,将名称添加到服务文件也无济于事,但ELKI可能根本找不到该类,或者无法实例化它。

    还有一个tutorial on implementing a custom result handler,但它没有讨论如何将其添加到菜单中。在“开发模式”中 - 当文件夹中包含.class文件时 - 它会自动显示。