Построить кластеризацию по линиям матрицы с Kmeans - PullRequest
0 голосов
/ 26 октября 2018

БОЛЬШОЕ РЕДАКТИРОВАНИЕ

Исходный код был:

Построение графика, соответствующего чтению текстового файла с n строками.Каждая строка содержит 4 столбца, первые три столбца представляют собой координаты точек (x, y, z), а четвертый столбец представляет собой двоичную переменную, необязательную для этого построения.При каждых 20 прочитанных строках читается скелет, причем этот скелет представляет собой группу из 20 (x, y, z) точек или суставов, каждый из которых состоит из первых трех столбцов каждой строки.

ПримерСодержание текстового файла. Текстовый файл содержит 860 строк и 860/20 = 43, что соответствует 20 числам соединений для создания каркаса (x, y, z) соединений.Затем текстовый файл состоит из 43 скелетов, которые генерируют движение.Следовательно, текстовый файл представляет собой движение .Я назвал это «примером», потому что цифры меняются.

После создания кода для чтения движений скелета я создал большой 2D-массив, содержащий все движения вместе, и в результате получился массив 22797x400, где каждая строка представляет собой скелет.Таким образом, существует 22797 скелетов, по 400 столбцов для каждого.Я назвал этот последний двумерный массив final_array .

Я применил декомпозицию сингулярных значений (SVD) к final_array , где я использовал Vматрица из SVD (что приводит к матрицам S, V и D) для умножения между final_array и уменьшенной версией V (которая изначально составляет 400x400), в результате получается двумерный массив 22797x3, поскольку уменьшенная версия V составляла 400x3.Это было необходимо по ряду причин, которые здесь не нужно упоминать, но это было для уменьшения размеров, чтобы построить скелеты в следующих частях процесса.

Следовательно, у меня есть двумерный массив 22797x3, где каждая строка представляет скелет, построенный из операций, описанных выше, и мне нужно применить кластеризацию к этой матрице, где каждая строка будет кластеризована в группу, используя Kmeansиз Scikit - учиться на Python.Это должен быть кластер с 100 группами кластеризации.

В результате мне нужно получить результат kmeans_labels со списком из 22797 элементов, информируя, что это была группа из 100 групп кластеров, каждая строка (скелет) которых была сгруппированаat.

До сих пор я пробовал:

kmeans = KMeans(n_clusters=100, random_state=0).fit(matrix)

Но результатом было следующее сообщение об ошибке:

Количество найденных различных кластеров (68)меньше, чем n_clusters (100).Возможно, из-за повторяющихся точек в X. return_n_iter = True)

Не имеет значения, сколько раз я меняю номер группы, сообщение об ошибке возвращается с меньшим значением.Любая гепатит?

1 Ответ

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

Эта ошибка означает, что ваша матрица данных в основном состоит из повторяющихся векторов. Таким образом, из ваших 22797 точек данных есть только 68 различных векторов, а остальные являются просто повторениями этих 68 значений. Попробуйте распечатать матрицу. Я полагаю, вы либо не читаете данные должным образом, либо неправильно измеряете их

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...