Извлечение кластеров непосредственно из корреляционной матрицы? - PullRequest
0 голосов
/ 20 сентября 2019

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

Для приведенных ниже данных есть два чистых кластера/ возможные группы, и мне было интересно, есть ли какая-либо программа / инструмент / функция, которая может извлечь его?

Код:

library(factoextra)
distance <- get_dist(df)
fviz_dist(distance, gradient = list(low = "#00AFBB", mid = "white", high = "#FC4E07"))

Кадр данных (имена строк и столбцов соответствуют уникальным идентификаторам):

"","10039","10649","12095","12095x","12095xx","1250","12651","12757","1276","1278x"
"10039",0.255115618609175,-0.177854388857815,-0.0678361007484356,-0.352181285930436,-0.381869743064316,0.0997439892889507,-0.169349645042077,-0.00965202634702178,-0.0510234989805499,-0.0510234989805499
"10649",0.050959625003298,1,-0.0518039876671861,-0.179833539980186,0.050690373507738,0.128702514770023,-0.035435238826486,-0.0201628019873111,0.134771635570939,0.0356960459697166
"12095",-0.0216545036334337,-0.121466109785836,1,-0.1994809609399,-0.260343912678546,0.087392079332695,0.0123907872824176,0.087392079332695,0.087392079332695,-0.0216545036334337
"12095x",-0.098165021937254,-0.0458019488190383,0.00437032844659258,1,-0.113222380655106,-0.0402373870305558,0.0559033755079281,-0.0239049725192886,-0.0641124655537419,-0.0833206680201322
"12095xx",-0.166450101886438,0.0877515444667101,-0.163978399896905,-0.209807655480148,1,-0.15714120804553,-0.236776402855779,-0.210541064944441,-0.181807583843066,-0.19427423003104
"1250",1,0.187857639241878,0.220566284642567,-0.121083419077306,-0.137374140895616,1,0.34356843512983,1,1,1
"12651",0.252133611190047,0.119534413608904,0.24277152335447,0.0682069261602969,-0.130770022311008,0.435253016076324,1,0.630921537603276,0.411525000221144,0.371485268998199
"12757",0.124889049505779,-0.194934097542696,-0.0953559119912251,-0.276086004602751,-0.354148895078468,0.235644433149966,0.0645380123460424,0.38656429814172,0.0820770489758271,0.0820770489758271
"1276",0.45047612755622,0.0686398225015061,0.0952133592954676,-0.253496989469619,-0.270384179141728,1,0.19469614096637,0.45047612755622,1,1
"1278x",1,0.0367380740951311,0.0691680273310695,-0.254489814171706,-0.269208350534652,1,0.194504158280285,1,1,1

1 Ответ

1 голос
/ 20 сентября 2019

K-означает, требуется координаты , а не матрица расстояний.Таким образом, результаты k-средних совершенно ненадежны.

Преобразуйте вашу корреляцию в расстояние.

Затем используйте иерархическую кластеризацию, которая принимает матрицу расстояний.

...