Я попытался найти ответ на этот вопрос, но не смог его найти:
Пытаясь выполнить кластеризацию, специфичную для каждого идентификатора пользователя в моем наборе данных (их 385), я вычислил евклидовы расстояния между каждым пользователем и вектор географического расстояния (расстояние гаверсинуса). Однако это привело к списку матриц расстояний, к которому я не могу понять, как применить иерархическую кластеризацию.
Пример
разделение данных по идентификатору пользователя
user_id.split<-split(mydata$geodistancevector,mydata$userid)
вычисление евклидова расстояния для каждого раскола
split.distances<-lapply(user_id.split,function(x) dist(x,method="euclidean"))
str(split.distances)
приводит к списку из 385, например
>$ 1 :Class 'dist' atomic [1:496] 1788.4 24.7 922.2 277.8 873.7 ...
>.. ..- attr(*, "Size")= int 32
>.. ..- attr(*, "Diag")= logi FALSE
>.. ..- attr(*, "Upper")= logi FALSE
>.. ..- attr(*, "method")= chr "euclidean"
>``.. ..- attr(*, "call")= language dist(x = x, method = "euclidean")
>$ 2 :Class 'dist' atomic (0)
.. ..- attr(*, "Size")= int 0
.. ..- attr(*, "Diag")= logi FALSE
.. ..- attr(*, "Upper")= logi FALSE
.. ..- attr(*, "method")= chr "euclidean"
.. ..- attr(*, "call")= language dist(x = x, method = "euclidean")
Так далее...
Как применить hclust к этому списку расстояний? Я хотел бы иметь возможность разрезать его на 385 (cutree) и связать его с исходным фреймом данных.
Благодарность!
lapply(lapply(split.distances, hclust), cutree)
? - person Scott Ritchie   schedule 05.08.2015$1
до$385
и вырезать дерево для каждого отдельного подмножества? - person I.V   schedule 11.08.2015