иерархическая кластеризация на корреляциях в Python scipy/numpy?

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

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

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

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

спасибо.

10
задан fmw42 13 June 2018 в 02:36
поделиться

1 ответ

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

Y=pdist(X, 'correlation')

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

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

потому что связь позаботится о pdist за вас.

8
ответ дан 4 December 2019 в 02:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: