ELKI использует double
для представления чисел. Если вам нужна более высокая точность, вам придется реализовать свои собственные модули синтаксического анализатора и вывода (хотя это легко, поскольку у нас очень модульная архитектура).
Сериализация вывода по умолчанию в текст обрабатывается Java. Таким образом, точность — это то, что вы получаете от Java по умолчанию. Это должно быть 15-16 цифр точности, если вы используете DoubleVector
, и 7-8 цифр, если вы используете FloatVector
.
Быстрая проверка с помощью groovysh:
new DoubleVector([12345.678901234567890, 3456.109453] as double[]);
===> 12345.678901234567 3456.109453
new FloatVector([12345.678901234567890, 3456.109453] as float[]);
===> 12345.679 3456.1094
дает только потери, которые можно ожидать от double
и float
точности.
Лучший способ получить метки строк — это... добавить метки строк к вашим данным.
Запись на ваш дополнительный вопрос в комментариях: синтаксический анализатор по умолчанию будет обрабатывать текстовую строку в начале вашего файла как метки столбцов. Так что просто поместите «X Y» в первую строку вашего файла.
Таким образом, разумным форматом ввода будет:
X Y Label
1 2 Point7
3 4 "Point 8"
Ниже приведены не очень хорошие идеи:
5 6 123shouldwork
7 8 don't do this: 3 parser will retain the 3
метка не должна быть числовой, чтобы синтаксический анализатор автоматически обрабатывал ее как метку. В противном случае необходимо установить соответствующий параметр.
DBID предназначены для внутренней обработки. Может быть, нам вообще не стоит записывать их в вывод. FixedDBIDFilter
— хакерский обходной путь; он предназначен для получения воспроизводимого хеширования при использовании алгоритмов, требующих хеширования на основе идентификатора, и выполнения нескольких запусков в MiniGUI. Поскольку при нескольких запусках DBID будут постоянно перечисляться.
person
Erich Schubert
schedule
24.02.2014
FixedDBIDsFilter
, чтобы получитьDBIDs
, которые соответствуют номеру строки вашего входного файла при использовании MiniGUI. Рассматривали ли вы возможность написания пользовательского модуля вывода для вашего варианта использования? - person Has QUIT--Anony-Mousse   schedule 23.02.2014