Дендрограмма с сюжетом - как настроить пользовательский метод связи для иерархической кластеризации - PullRequest
1 голос
/ 05 апреля 2020

Я новичок в сюжете и мне нужно нарисовать дендрограмму со средней групповой связью.

Я знаю, что в create_dendrogram() есть параметр distfun, но я понятия не имею, что передать этот аргумент, чтобы получить Средняя группа связи . Аргумент distfun явно должен вызываться. Какую функцию я должен передать ей?

В качестве идентификатора у меня есть примерная матрица парных расстояний 0 13 0 2 14 0 17 1 18 0 , которая при переходе к методу create_dendrogram(), похоже, дает неправильный результат. Что я здесь не так делаю?

код:

import plotly.figure_factory as ff

import numpy as np

X = np.matrix([[0,0,0,0],[13,0,0,0],[2,14,0,0],[17,1,18,0]])

names = list("0123")
fig = ff.create_dendrogram(X, orientation='left', labels=names)
fig.update_layout(width=800, height=800)
fig.show()

Код, буквально скопированный с сюжетного сайта b c idk wth, который я должен делать. Этот сайт: https://plotly.com/python/v3/dendrogram/

1 Ответ

0 голосов
/ 05 апреля 2020

Вы можете выбрать метод связи, используя scipy.cluster.hierarchy.linkage() через linkagefun аргумент в функции create_dendrogram().

Например, использовать UPGMA (метод невзвешенной группы пар с арифметическим c среднее) алгоритмом :

import plotly.figure_factory as ff
import scipy.cluster.hierarchy as sch
import numpy as np

X = np.matrix([[0,0,0,0],[13,0,0,0],[2,14,0,0],[17,1,18,0]])

names = "0123"
fig = ff.create_dendrogram(X,
                           orientation='left',
                           labels=names,
                           linkagefun=lambda x: sch.linkage(x, "average"),)
fig.update_layout(width=800, height=800)
fig.show()

Обратите внимание, что X должна быть матрицей выборок данных.

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