иерархическая кластеризация по корреляциям в Python scipy / numpy? - PullRequest
9 голосов
/ 25 мая 2010

Как запустить иерархическую кластеризацию на корреляционной матрице в scipy / numpy? У меня есть матрица из 100 строк на 9 столбцов, и я хотел бы иерархически кластеризовать по корреляции каждой записи по 9 условиям. Я хотел бы использовать 1-корреляцию Пирсона в качестве расстояния для кластеризации. Предполагая, что у меня есть numpy массив X, который содержит матрицу 100 x 9, как я могу это сделать?

Я пытался использовать hcluster, основываясь на этом примере:

Y=pdist(X, 'seuclidean')
Z=linkage(Y, 'single')
dendrogram(Z, color_threshold=0)

Однако, pdist - это не то, что я хочу, так как это евклидово расстояние. Есть идеи?

спасибо.

1 Ответ

7 голосов
/ 26 мая 2010

Просто измените метрику на correlation, чтобы первая строка стала:

Y=pdist(X, 'correlation')

Однако я считаю, что код можно упростить до:

Z=linkage(X, 'single', 'correlation')
dendrogram(Z, color_threshold=0)

потому что связывание позаботится о pdist для вас.

...