ELKI: Реализация собственного ResultHandler
Мне нужно реализовать кастом ResultHandler
но я не совсем понимаю, как на самом деле интегрировать мой пользовательский класс в программный пакет.
Я прочитал это: http://elki.dbs.ifi.lmu.de/wiki/HowTo/InvokingELKIFromJava но у меня вопрос, как вы собираетесь реализовать пользовательский обработчик результатов, чтобы он отображался в GUI?
Единственный способ сделать это - извлечь пакет elki.jar и вручную вставить свой пользовательский класс в исходный код, а затем повторно набрать пакет. Однако я уверен, что это не так, как должно быть.
Кроме того, в моем обработчике результатов мне нужно вывести все строки в один текстовый файл с кластером, которому принадлежит каждая строка. Как советы, как мне этого добиться?
1 ответ
Здесь есть два вопроса.
Чтобы сделать ваш класс инстанцируемым с помощью пользовательского интерфейса (как MiniGUI, так и командной строки), классы должны реализовать наш API Parameterization. По сути, существует два варианта создания класса:
- Добавить
public
конструкторбез параметров (пользовательский интерфейс не будет знать, как установить ваши параметры!) - Добавить внутренний
static class Parameterizer
это обрабатывает параметризацию
- Добавить
чтобыдобавить свой класс в автозаполнение(выпадающее меню), классы должны быть обнаружены с помощью интерфейса MiniGUI/CLI/ других интерфейсов. ELKI использует два метода обнаружения:
- за
.jar
файлы, он читаетMETA-INF/elki/interfacename
служебные файлы. Это классический подход к загрузке сервисов; кроме того, что мы также разрешаем заказывать экземпляры. - только для каталогов, ELKI также отсканирует все
.class
файлы и проверять их. Это главным образом предназначено для времени разработки, чтобы избежать необходимости постоянно обновлять служебные файлы. По причинам производительности мы не проверяем содержимое.jar
файлы; ожидается, что они будут использовать служебные файлы.
- за
Вам не нужно, чтобы ваш класс находился в выпадающем меню - вы всегда можете ввести полное имя класса. Если это не работает, добавление имени в служебный файл также не поможет, но ELKI либо не может найти класс вообще, либо не может создать его экземпляр.
Существует также руководство по реализации пользовательского обработчика результатов, но в нем не обсуждается, как добавить его в меню. В "режиме разработки" - при наличии папки с .class
файлы - он будет отображаться автоматически.