Может ли ELKI группировать ненормализованные отрицательные точки?

Я рассмотрел этот вопрос, но решение не помогает. Ошибка сбоя задачи кластеризации ELKI Kmeans для высокого размерные данные

Это мой первый раз с ELKI, поэтому, пожалуйста, потерпите меня. У меня есть 45000 точек 2D-данных (после выполнения doc2vec ), которые содержат отрицательные значения и не нормализованы. Набор данных выглядит примерно так:

-4.688612   32.793335
-42.990147  -20.499323
-24.948868  -10.822767
-45.502155  -40.917801
27.979715   -40.012688
1.867812    -9.838544
56.284512   6.756072

Я использую алгоритм K-средних, чтобы получить 2 кластера. Однако я получаю следующую ошибку:

Task failed
de.lmu.ifi.dbs.elki.data.type.NoSupportedDataTypeException: No data type found satisfying: NumberVector,field AND NumberVector,variable
Available types: DBID DoubleVector,variable,mindim=0,maxdim=1 LabelList
    at de.lmu.ifi.dbs.elki.database.AbstractDatabase.getRelation(AbstractDatabase.java:126)
    at de.lmu.ifi.dbs.elki.algorithm.AbstractAlgorithm.run(AbstractAlgorithm.java:81)
    at de.lmu.ifi.dbs.elki.workflow.AlgorithmStep.runAlgorithms(AlgorithmStep.java:105)
    at de.lmu.ifi.dbs.elki.KDDTask.run(KDDTask.java:112)
    at de.lmu.ifi.dbs.elki.application.KDDCLIApplication.run(KDDCLIApplication.java:61)
    at [...]

Итак, мой вопрос: требует ли ELKI, чтобы данные находились в диапазоне [0,1], потому что все примеры, с которыми я сталкивался, имели данные в этом диапазоне.

Или дело в том, что ELKI не принимает отрицательные значения?

Если что-то еще, может ли кто-нибудь помочь мне в этом?

Благодарю вас!


person Sascha    schedule 24.04.2019    source источник


Ответы (1)


ELKI может нормально обрабатывать отрицательные значения.

Ваши входные данные имеют неправильный формат. Та же проблема, что и в задаче кластеризации ELKI Kmeans сбойная ошибка для многомерных данных

По-видимому, ваши строки имеют значения 0 или 1. ELKI сам по себе согласен с этим, но k-means требует, чтобы данные находились в векторном пространстве R^d, поэтому ELKI не может запускать k-means для вашего набора данных. Но причина в том, что входной файл плохой. Вы можете перепроверить свой файл — вероятно, есть по крайней мере одна строка, которая не отформатирована должным образом.

person Erich Schubert    schedule 24.04.2019
comment
Я попробовал решение, данное для этого вопроса. Это не сработало для меня. Я даже нормализовал свои данные и попробовал. И я пробовал для DBSCAN и OPTICS тоже. С DBSCAN по крайней мере открывается окно вывода, но не отображается ни кластер, ни что-либо еще. И в главном окне я получаю много ошибок машинный язык красным. - person Sascha; 24.04.2019
comment
Кроме того, я не знаю меток точек данных, в отличие от mouse.csv в учебниках ELKI. Итак, не зная меток, правильно ли NumberVectorLabelParser? (...потому что у меня нет ярлыков) - person Sascha; 24.04.2019
comment
Это не машинный язык. Это называется трассировкой стека Java и предназначено для разработчиков-людей... базовые знания для любого разработчика. Как видно из примеров, метки не нужны. Но некоторая часть ваших файлов не может быть проанализирована и в конечном итоге интерпретируется как метки. Но есть и другие способы взлома ваших файлов. Вы на 100% уверены, что это правильные числа? Двойная проверка. Потому что в вашем файле есть какое-то значение, которое синтаксический анализатор не смог проанализировать. Но это якобы ваш файл с дефектом. - person Erich Schubert; 24.04.2019
comment
Ага, понятно. Спасибо за помощь! Я проверил данные, и все значения являются числами. Наконец-то я заставил его работать, введя файл txt вместо csv. У меня это не работает с csv. Но с txt, K-means и DBSCAN дают некоторый результат! - person Sascha; 25.04.2019
comment
Может разделитель не тот поставил? Существует параметр конфигурации для разделителей, потому что CSV не является однозначно определенным форматом (как и файл txt). Или числа отформатированы в какой-то локали? В любом случае, было бы неплохо узнать, что пошло не так. Как вы создали CSV? Потому что, если это общая проблема, мы могли бы изменить значения по умолчанию (по крайней мере, если это не приведет к поломке для других). - person Erich Schubert; 25.04.2019
comment
Числа — это в основном векторные представления твитов, которые я получаю, используя модель doc2vec Gensim. Я работаю в Колабе. Я экспортирую кадр данных, содержащий векторы, в txt, используя normal = df.to_csv (r'normalized.txt', header=None, index = None), и в csv, используя np.savetxt(r 'norm.csv',df,delimiter=',',fmt=('%1.22e')) ..... Файл txt работает, а csv - нет. - person Sascha; 25.04.2019
comment
Какая версия не работает? .txt, сгенерированный to_csv, или .csv, сгенерированный savetxt? Но выбор формата %1.22e может быть ответственным, потому что не каждое 22-значное число будет принято ELKI, потому что двойная точность имеет только 16-17 цифр точности. Поскольку в ваших входных данных не так много цифр, не рассматривали ли вы возможность использовать что-то вроде %10f? См. также github.com/elki-project/elki/issues/39. - person Erich Schubert; 25.04.2019
comment
Текущая версия должна была выдать вам предупреждение Слишком много цифр в том, что выглядело как двойное число, хотя рассматривается как строка. Может быть, это было в красном тексте? - person Erich Schubert; 25.04.2019
comment
.csv, сгенерированный savetxt, не работал (csv, сгенерированный to_csv, тоже не работал). Глядя на ваше предложение, я также пробовал без %1.22e. Текстовый файл все еще работает. Ошибка, которую я получил красным цветом, выглядит следующим образом: Недопустимая строка в кавычках: не найдена закрывающая кавычка в:Kv°Ø½çí°d‹Ý{ÞÑKv¨X:,G;,ÙÁbçmý=,ÙÁb÷yÞÑKv°X '×Kv°X'×Ë�Ë!–ɯ_›ø=,‡tX&¿‹'¼Ÿ“›;ÚaÉ И я не могу понять ни головы, ни конца. Данные в моем CSV имеют точно такой же формат, как и образец набора данных mouse.csv. - person Sascha; 25.04.2019
comment
Таким образом, Java якобы не допускает неинициализированную память. Откуда-то должны появиться эти мусорные символы. Можете ли вы загрузить битый файл куда-нибудь для проверки? - person Erich Schubert; 27.04.2019
comment
github.com/nikitasalkar1997/Twitter-Dataset.git Извините за поздний ответ.. , Весь набор данных загружен здесь. - person Sascha; 30.04.2019
comment
Но этот файл текстовый, а не числовой. Так это не битый файл, не так ли? - person Erich Schubert; 01.05.2019
comment
Так жаль об этом! Я загрузил правильный файл, а также файл с нормализованными данными. - person Sascha; 01.05.2019
comment
У меня оба файла нормально загружаются в ELKI, я не могу воспроизвести вашу ошибку. Какой файл сломан? - person Erich Schubert; 01.05.2019
comment
Я получал красную ошибку с файлами csv... Не с файлом txt... Я новичок в elki, и это мой первый проект. Я не знаю, что не так. Мне очень жаль, что я беспокою вас. - person Sascha; 01.05.2019
comment
Ну, файлы, которые вы загрузили, работают для меня, поэтому они не помогают мне отладить это. Поэтому и спрашиваю конкретно про не рабочий файл. - person Erich Schubert; 02.05.2019