Как объединить результат неконтролируемой иерархической кластеризации с исходными данными - PullRequest
0 голосов
/ 29 сентября 2019

Я провел неконтролируемый иерархический кластерный анализ в R. Мои данные представляют собой числа в 3 столбцах и около 120000 строк. Мне удалось использовать срезанное дерево и распознать 6 кластеров. Теперь мне нужно вернуть эти кластеры к исходным данным, т.е. добавить еще один столбец с указанием группы кластеров (1 из 6). Как я могу это сделать?

# Ward's method
hc5 <- hclust(d, method = "ward.D2" )

# Cut tree into 6 groups
sub_grp <- cutree(hc5, k = 6)

# Number of members in each cluster
table(sub_grp)

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

1 Ответ

0 голосов
/ 30 сентября 2019

Переменная sub_grp - это просто вектор назначений кластера, поэтому вы можете просто добавить его во фрейм данных:

data(iris)                         # Data frame available in base R.
str(iris)
d <- dist(iris[, -5])              # Column 5 is the species name so we drop it
hc5 <- hclust(d, method="ward.D2")
sub_grp <- cutree(hc5, k=3)
str(sub_grp)
iris$grp <- sub_grp
str(iris)
aggregate(iris[, 1:4,], by=list(iris$grp), mean)
xtabs(~grp+Species, iris)

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

...