Как я могу выполнить иерархическую кластеризацию на корреляционной матрице в 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
не то, что я хочу, так как это - евклидово расстояние. Какие-либо идеи?
спасибо.
Просто измените метрику на корреляцию
, чтобы первая строка стала:
Y=pdist(X, 'correlation')
Однако я считаю, что код можно упростить до:
Z=linkage(X, 'single', 'correlation')
dendrogram(Z, color_threshold=0)
потому что связь позаботится о pdist за вас.