Воссоздание МДС кластера плотности с известными метками

У меня есть прекрасный график плотности. введите описание изображения здесь

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

library(densityClust)
nbhf_dist=dist(StrongGMM[,6:10])
NB_den_clus=densityClust(nbhf_dist, gaussian=TRUE)
plot(NB_den_clus)
NBClust <- findClusters(NB_den_clus, rho=5, delta=5)
plotMDS(NBClust)

rho и дельта определялись графиком принятия решения (NB_den_clus). Все это прекрасно.

Моя проблема в том, что я хотел бы воссоздать этот график плотности с другими метками. Я пытаюсь понять, сильно ли влияет на эти кластеры расположение моей коллекции данных.

Для окончательного поиска кластеров это результат:

> str(NBClust)
List of 8
 $ rho      : num [1:1064] 6.46 2 4.12 5.97 14.47 ...
 $ delta    : num [1:1064] 0.771 0.478 1.178 0.953 2.292 ...
 $ distance :Class 'dist'  atomic [1:565516] 4.2 2.61 25.07 25.48 20.04 ...
  .. ..- attr(*, "Size")= int 1064
  .. ..- attr(*, "Diag")= logi FALSE
  .. ..- attr(*, "Upper")= logi FALSE
  .. ..- attr(*, "method")= chr "euclidean"
  .. ..- attr(*, "call")= language dist(x = StrongGMM[, 6:10])
 $ dc       : num 1.9
 $ threshold: Named logi [1:2] 5 5
  ..- attr(*, "names")= chr [1:2] "rho" "delta"
 $ peaks    : int [1:3] 441 416 1021
 $ clusters : int [1:1064] 3 3 3 1 1 2 2 2 2 2 ...
 $ halo     : logi [1:1064] FALSE FALSE FALSE TRUE TRUE TRUE ...
 - attr(*, "class")= chr "densityCluster"

Есть ли способ применить известные метки к моей исходной матрице расстояний кластера плотности, а не кластерам, которые генерирует функция кластера плотности, и при этом иметь тот же график MDS?

Пожалуйста, дайте мне знать, если мне понадобится уточнить какой-либо момент. Я понимаю, что не даю данные для воспроизведения, но сейчас даже не знаю, с чего начать. Я попытался заменить вектор кластеров NBClust $ метками, которые я хотел бы использовать, но это дает пустой MDS (только точки, без цветных меток). Я считаю, что без пиков это неэффективно. Однако у меня нет возможности узнать, какими будут пики для моих известных скоплений.

Я думаю, что ответ находится раньше в коде. Приветствуются любые мысли.

-etg


person etgriffiths    schedule 28.11.2017    source источник


Ответы (1)


Я ответил на свой вопрос, поэтому решил поделиться тем, что узнал.

В пакете densityClust есть дополнительная функция plotDensityClust, которая является надстройкой. Не оригинальными авторами, поэтому вам может потребоваться повторно загрузить пакет с github, чтобы получить к нему доступ. Эта функция строит три диагностических графика для вашего объекта кластера плотности. Он также имеет дополнительные функции, которые позволяют вам определять внешний вид MDS.

Сверху я взял объект NBClust и заменил вектор $ cluster на вектор, соответствующий нужным мне меткам. Затем я назначил цвета.

#Create new cluster list from old cluster list
StationClust=NBClust 
#Taking labels from previous dataframe.
facstations=as.factor(alles$juststa)
#Converting them to integers.
intstations=mapvalues(facstations, from = c("Station-1", "Station-2", "Station-20","Station-21", "Station-22","Station-24","Station-27-30","Station-3","Station-5","Station-6","Station-9", "Station-EK"), to = c(1,2,20,21,22,24,27,3,5,6,9,31))
#Create color list.
col=c("red", "blue", "green","purple","orange","cyan3", "gray","yellow","chocolate4", "darkred","darkgreen",  "hotpink")  
#Apply new clusters. 
StationClust$clusters=as.integer(intstations)
plotDensityClust(StationClust, col=col)

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

Выглядит беспорядочно! Но это была цель. Надеюсь, это поможет кому-то другому!

-etg

person etgriffiths    schedule 29.11.2017