Создайте многомерный график подобия

Я пытаюсь изучить и внедрить спектральную кластеризацию в многомерном наборе данных в R. У меня есть 9 независимых переменных и 1 зависимая переменная, которая является двоичной.

В качестве первого шага к спектральной кластеризации мне необходимо создать график из заданного набора данных (у меня около 1000 наблюдений). Поскольку я только начинаю, меня не волнует метод, используемый для создания графа, но будет лучше, если он будет использовать k-ближайших соседей.

Я наткнулся на функцию nng в пакете cccd, которая создает график. Я использовал следующее:

knnGraph<-nng(as.matrix(data[2:10]),k=3)

Это работает нормально, за исключением того, что когда я пытаюсь визуализировать график с помощью plot(knnGraph), я получаю следующую ошибку:

Error in layout.norm(layout, -1, 1, -1, 1) : 
  `layout' should have 2 or three columns

Я не уверен, как поступить, любая помощь будет высоко оценена. Я также пытался найти пошаговое руководство по реализации спектральной кластеризации в R, но не смог его найти. Любые указатели на любой такой ресурс также будут высоко оценены.


person Patthebug    schedule 07.05.2014    source источник


Ответы (1)


Похоже, ngng хочет как минимум двухмерную матрицу. Этот пример, казалось, работал

library(cccd)
data<-runif(50)
knnGraph<-nng(matrix(data[2:10], ncol=2),k=3)
plot(knnGraph)

Обратите внимание, что я изменил as.matrix на matrix и добавил nol=2, чтобы придать ему второе измерение. Я никогда раньше не использовал ни эту функцию, ни этот пакет, поэтому я понятия не имею, что на самом деле нужно в этом параметре, но похоже, что матрица 9x1, возвращаемая as.matrix(data[2:10]), не собиралась ее сокращать.

person MrFlick    schedule 07.05.2014
comment
Спасибо за ваш ответ, но, похоже, он не работает с моим набором данных. Ваш data имеет 50 элементов (все принадлежат 1 переменной), тогда как мой data представляет собой фрейм данных с 10 переменными. Другими словами, моему ncol уже 9, что и является причиной этой проблемы. Я все еще получаю ту же ошибку. - person Patthebug; 08.05.2014
comment
Ну, данные определенно выглядели как вектор для меня. Вот почему всегда полезно предоставлять примеры данных при публикации вопроса. В любом случае, функция, кажется, любит матрицы только с 2 или 3 столбцами. Так что, возможно, вы передаете неправильный тип данных. Документация не настолько описательная. Возможно, вы можете обратиться к ссылке, которую они предоставляют, чтобы увидеть, работает ли метод с более высокими измерениями: D.J. Марчетт, Случайные графики для распознавания статистических образов, John Wiley & Sons, 2004 г. - person MrFlick; 08.05.2014