ELKI как повысить точность?

Я использую мини-графический интерфейс ELKI для кластеризации точек данных. У меня есть около 1300 точек данных GPS, которые я хотел бы сгруппировать в группы (DBSCAN и OPTICS). В качестве входного файла для dbc.in я использую файл csv только с двумя столбцами (X, Y). Проблема в том, что мои координаты X, Y (в проекции) очень точны до 6 знаков после запятой. Но после запуска алгоритма кластера я получаю более низкую точность (до 3 знаков после запятой). Как повысить точность точек вывода?

А также, когда он генерирует кластеры, он автоматически вызывает некоторые виртуальные идентификаторы, которые не соответствуют моим фактическим идентификаторам точек (ID, X, Y). Однако идентификатор не указан во входном CSV. Он состоит всего из двух столбцов (X, Y).


person user26161    schedule 20.02.2014    source источник
comment
Можете ли вы поделиться примером строк ввода и вывода? ELKI назначает внутренние идентификаторы, но вы можете просто отказаться от них, если они вам не нужны.   -  person Has QUIT--Anony-Mousse    schedule 22.02.2014
comment
Вот подробное объяснение моей проблемы. формат входного файла (X) (Y) ___________________________________ 3456.124357 5673.4567 3456.109453 5673.4451 ...................... .............. ........ выходной файл (с внутренним идентификатором и усеченными X, Y) ________________ 651 3456.1244 5673.46 652 3456.1095 5673.45 проблема в том, что значения усекаются, а выходной файл не содержит фактического идентификатора точек (скажем, начиная с 0), поэтому я не могу определить, какие точки сгруппированы, а также какая точка принадлежит какому кластеру.   -  person user26161    schedule 23.02.2014
comment
Можете ли вы отредактировать вопрос, чтобы сделать его более читабельным? Избегайте цензуры данных без крайней необходимости. Используйте FixedDBIDsFilter, чтобы получить DBIDs, которые соответствуют номеру строки вашего входного файла при использовании MiniGUI. Рассматривали ли вы возможность написания пользовательского модуля вывода для вашего варианта использования?   -  person Has QUIT--Anony-Mousse    schedule 23.02.2014
comment
Спасибо Anony-Mouse. Проблема с ID решается с помощью FixedDBIDsFilter. Можете ли вы сказать мне, как увеличить десятичные точки (точность) выходных сгруппированных/шумовых точек. Я хочу, чтобы он был точно похож на входные.   -  person user26161    schedule 23.02.2014
comment
Плавающая запятая имеет потери, и точное форматирование этих чисел зависит от языка. AFAICT, ELKI просто использует форматирование Java. Нет возможности сказать, что нужно написать ровно столько цифр, сколько было введено. Это потребует сохранения исходных данных в виде строк.   -  person Has QUIT--Anony-Mousse    schedule 23.02.2014
comment
Спасибо... может ли кто-нибудь сказать мне, как мне пометить ось Y и ось X на графиках визуализации. По умолчанию отображаются столбцы 0 и столбцы 1. Я хочу, чтобы это были X и Y.   -  person user26161    schedule 24.02.2014


Ответы (1)


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
comment
Спасибо за подробное объяснение. У меня есть еще одно сомнение. Как я могу сохранить визуализацию (графики) в jpeg или любом другом формате изображения. Я попробовал вариант экспорта, но разрешение изображения очень плохое. - person user26161; 26.02.2014
comment
Лучший формат экспорта — SVG. Затем вы можете редактировать его с помощью inkscape и, например. изменить шрифты, цвета или размещение меток. Но если вы выберете формат пикселей, вы также можете установить разрешение изображения. (для экспорта в PDF также добавьте банки для экспорта Batik pdf) Тем не менее; есть лучшие инструменты визуализации. Визуализации в ELKI — это удобная функция. - person Erich Schubert; 26.02.2014