Упорядочивание сгруппированных точек с использованием Kmeans и R

У меня есть набор данных (из 5000 точек с 4 измерениями), которые я сгруппировал с использованием kmeans в R.

Я хочу упорядочить точки в каждом кластере по их расстоянию до центра этого кластера. .

Проще говоря, данные выглядят так (я использую подмножество для проверки различных подходов):

id  Ans Acc Que Kudos
1   100 100 100 100
2   85  83  80  75
3   69  65  30  29
4   41  45  30  22 
5   10  12  18  16
6   10  13  10  9
7   10  16  16  19
8   65  68  100 100
9   36  30  35  29
10  36  30  26  22

Во-первых, я использовал следующий метод для кластеризации набора данных в 2 кластера:

(result <- kmeans(data, 2))

Это возвращает объект kmeans который имеет следующие методы: кластер, центры и т. д.

Но я не могу понять, как сравнить каждую точку и создать упорядоченный список.

Во-вторых, я попробовал метод упорядочения, предложенный другим пользователем SO здесь

Я использую следующие команды:

clus <- kmeans(scale(x, scale = FALSE), centers = 3, iter.max = 50, nstart = 10)
mns <- sapply(split(x, clus$cluster), function(x) mean(unlist(x)))
result <- dat[order(order(mns)[clus$cluster]), ]

Кажется, что создается упорядоченный список, но если я привязываю его к помеченным следующую команду cbind):

result <- cbind(x[order(order(mns)[clus$cluster]), ],clus$cluster)

Я получаю следующий результат, который, кажется, не упорядочен правильно:

id  Ans Acc Que Kudos   clus
1   3   69  65  30  29  1
2   4   41  45  30  22  1
3   5   10  12  18  16  2
4   6   10  13  10  9   2
5   7   10  16  16  19  2
6   9   36  30  35  29  2
7   10  36  30  26  22  2
8   1   100 100 100 100 1
9   2   85  83  80  75  2
10  8   65  68  100 100 2

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

РЕДАКТИРОВАТЬ:::::::::::

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

Центры вышеуказанных кластеров (при использовании k = 2) следующие. Но я не знаю, как получить и сравнить это с каждой отдельной точкой.

     Ans    Accep     Que      Kudos
1 83.33333 83.66667 93.33333 91.66667
2 30.28571 30.14286 23.57143 20.85714 

NB::::::::

Мне не нужны самые популярные kmeans, но я хочу указать количество кластеров и получить упорядоченный список точек из этих кластеров.

6
задан Community 23 May 2017 в 10:34
поделиться