иерархическая кластеризация с одной связью в фрейме данных Python - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть информационный фрейм pandas для иерархической кластеризации.

    A   B   C
A   0   1   3
B   1   0   2
C   3   2   0

Код, который я пробовал:

z=linkage(df,'single')
dn = dendrogram(z,labels=index)

, тогда я получил странный результат: A & B как кластер с расстоянием 1.73(правильное значение должно быть 1), затем A & B & C как кластер с расстоянием 3.46 (правильное значение должно быть 2).

1 Ответ

0 голосов
/ 27 сентября 2019

Расстояние по умолчанию, используемое в scipy.cluster.hierarchy.linkage, - это евклидово расстояние, определенное как d(x,y) = \sqrt(\sum(x_i-y_i)) (вы можете проверить его здесь ).Я думаю, что причина, по которой вы запутались, в том, что вы взяли среднее (и вычислили среднеквадратичную ошибку).

Так что в вашем случае d(A,B) = \sqrt(3) = 1.73

Тогда, поскольку ваша связьsingle, расстояние между (A, B) и C является минимальным между d (A, C) и d (B, C), которое составляет d(B,C) = \sqrt(12)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...