Визуализация кластеризации KMeans с множеством входов - PullRequest
0 голосов
/ 15 октября 2018

Я совершенно новичок в машинном обучении (и полное раскрытие: это для школы) и пытаюсь обернуть голову вокруг кластеризации KMeans и ее реализации.Я понимаю суть алгоритма и реализовал его на Java, но меня немного смущает вопрос о том, как использовать его в сложном наборе данных.

Например, у меня есть 3 папки, A, B и Cкаждый из которых содержит 8 текстовых файлов (всего 24 текстовых файла).Я хочу убедиться, что я правильно реализовал KMeans, с помощью алгоритма кластеризовав эти 24 документа в 3 кластера, основываясь на их использовании слов.

Для этого я создал матрицу частот слов и выполнил tfidf , чтобы создать разреженную матрицу размером 24 x 2367 (всего 24 документа и 2367 слов / диаграмм).).Затем я хочу запустить алгоритм кластеризации KMeans на моей матрице tfidf и не получаю хороших результатов.

Чтобы попытаться отладить, я пытаюсь визуализировать свою матрицу tfidf и центроиды, которые я получаю в качестве выходных данных, но я не совсем понимаю, как можно визуализировать эту матрицу 24 x 2367?Я также сохранил эту матрицу в файл .csv и хочу запустить на ней библиотеку python - но все, что я видел, - это матрица nx 2.Как можно поступить так?

Заранее спасибо,

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Есть несколько вещей, которые я бы предложил (хотя я не уверен, является ли SO правильным местом для этого вопроса):

a.Поскольку вы упоминаете, что вы кластеризуете неструктурированные текстовые документы, и вы не получаете хороших результатов, вам может потребоваться применить типичные задачи предварительной обработки текста, такие как стоп-слово, пунктуация, понижение регистра, остановка перед созданием матрицы TF-IDF.,Существуют другие задачи предварительной обработки текста, такие как удаление чисел, шаблонов и т. Д., Которые необходимо оценивать в каждом конкретном случае.Что касается визуализации в 2 D, вам необходимо уменьшить размерность вектора объектов до 2. Размер может уменьшиться с 2367 после предварительной обработки, но не намного.Затем вы можете использовать SVD в матрице TF-IDF и проверить величину дисперсии, которую он может объяснить.Однако сокращение до 2 компонентов может привести к большой потере данных, и визуализация не будет такой значимой.Но вы можете попробовать и посмотреть, имеют ли результаты смысл.

c.Если текстовое содержание в документах невелико, вы можете попробовать создать теги ручной работы, которые описывают документ.Эти теги не должны превышать 20 на каждый документ.С помощью этих новых тегов вы можете создать матрицу TF-IDF и выполнить SVD, что может дать более интерпретируемые результаты в 2D-визуализациях.

d.Для оценки сгенерированных кластеров можно также рассмотреть силуэтную меру .

0 голосов
/ 15 октября 2018

Поскольку это для школы, здесь не будет никакого кода, только идеи.

Запись и чтение в формате CSV также будут оставлены читателю (только примечание: рассмотрите альтернативы - сохранение / загрузка * 1003)* массивы, h5py библиотека и json или msgpack для начала).

Проблема для людей, рассматривающих матрицу 24 x 2367, состоит в том, что она слишком широка.Числа в этом также похожи на бред.Но люди, в отличие от компьютеров, больше любят изображения (компьютерам все равно).

Вам необходимо сопоставить значения tf-idf с 0-255 и создать изображение.24 х 2367 значительно ниже мегапикселя.Но сделать это 24 х 2367 слишком длинным.Подберите свои ряды так, чтобы они могли составить хороший прямоугольник или приблизительный квадрат (2400 или 2401 должно подойти), и сгенерируйте изображение для каждой строки.Затем вы можете просмотреть отдельные строки или разбить их на плитки, чтобы получить полное изображение 6 x 4 всех ваших документов (помните о некотором промежуточном отступе. Если ваши пиксели серого цвета, выберите цветной отступ).

Другие идеи:

  • карты цветов
  • PCA
  • t-SNE
...