Как запустить иерархическую кластеризацию на корреляционной матрице в scipy/numpy? У меня есть матрица из 100 строк по 9 столбцов, и я хотел бы иерархически кластеризовать по корреляциям каждой записи в 9 условиях. Я бы хотел использовать корреляцию 1-pearson как расстояния для кластеризации. Предполагая, что у меня есть массив numpy «X», который содержит матрицу 100 x 9, как я могу это сделать?иерархическая кластеризация на корреляциях в Python scipy/numpy?
Я попытался с помощью hcluster, основываясь на этом примере:
Y=pdist(X, 'seuclidean')
Z=linkage(Y, 'single')
dendrogram(Z, color_threshold=0)
однако, pdist не то, что я хочу, так как это евклидово расстояние. Есть идеи?
спасибо.
Существует ли «корреляция» здесь Пирсон или Спирмен? Кроме того, не должно быть 1 - pearson, чтобы быть допустимой метрикой расстояния, которую можно использовать для pdist? Действительно ли pdist делает это автоматически? Благодарю. – user248237dfsf
Похоже, что это 1 - pearson для меня. Вы можете посмотреть на него самостоятельно в site-packages/scipy/spaces/distance.py –
Это довольно редкий случай, когда упомянутая выше корреляция означает корреляцию Спирмена. Обычно, если это Спирмен, люди скажут это, иначе возьмите Пирсона. – dwf