Как да включите персонализирани разстояния с ELKI?

Вече прочетох урока в документацията на ELKI ( http://elki.dbs.ifi.lmu.de/wiki/Tutorial/DistanceFunctions ).

За съжаление, не разбирам как да включа генерирания .class с MiniGUI (или bash скрипт за предоставения .jar). Как може да стане?

Ps: Знам, че звучи абсолютно глупаво, но когато се опитам да "напиша" името на класа, както е предложено, получавам грешката "Следните параметри не могат да бъдат обработени: HammingDistance", например.


person Samuel S.    schedule 16.07.2014    source източник
comment
Опитайте да дадете пълното име на класа. С име на пакет. Уверете се, че е на пътя на вашия клас.   -  person Has QUIT--Anony-Mousse    schedule 17.07.2014


Отговори (1)


ELKI ще зарежда класове чрез стандартния Java Classloader. Следователно те трябва да са в пътя на класа или не могат да бъдат заредени. Примерно извикване (ако приемем, че вашите класове са в папката bin) е
java -cp elki.jar:bin/ de.lmu.ifi.dbs.elki.application.ELKILauncher

Параметрите се интерпретират, както следва:

  • Ако има клас с това име (включително името на пакета!), той се използва.
  • В противен случай ELKI се опитва да добави името на пакета на очаквания интерфейс. Което позволява имена на преки пътища.
  • В противен случай известните класове (от сервизните файлове) се проверяват за псевдоними. Например евклидовото разстояние има псевдоним l2, Манхатън има псевдоним l1.
  • Класът трябва да има без параметри public конструктор или вътрешен public static class Parameterizer.

Помощта при въвеждане е изградена, както следва:

  • .jar файловете на classpath се проверяват за сервизни файлове в META-INF/elki/<interface>
  • папките в пътя на класа ви поставят в режим на разработка, където се изпълнява рекурсивен списък и всички .class файлове се проверяват. Това е много по-бавно, но премахва необходимостта от редактиране на служебните файлове. Откритите класове се показват под тези, изброени в служебния файл.

Освен това пакетът de.lmu.ifi.dbs.elki.application.internal включва класове, които ще инспектират всичко във вашия класов път и ще докладват напр. класове, които нямат public конструктор без параметри или вътрешен public static class Parameterizer.

person Erich Schubert    schedule 17.07.2014
comment
Благодаря ти много за помощта, Ерих, успях да използвам персонализирания клас за разстояние, който създадох! Продължаваме по-нататък: Има ли начин за директен достъп до данни с помощта на BDID? Опитвам се да получа данните на medoid от BDID, предоставен от метода getMedoid(). - person Samuel S.; 23.07.2014
comment
Може да има множество релации (напр. векторни данни, етикет). Ако искате данните, първо трябва да получите Relation, който искате да извлечете (т.е. да посочите дали да използвате векторна колона или колона с етикет). - person Erich Schubert; 23.07.2014