Получите метки данных с одинаковым цветом в scipy дендрограмме

Я выполнил иерархическую кластеризацию, используя scipy, и следующая моя дендрограмма. Теперь мне нужно получить надписи на листьях определенного цвета. Например: мне нужно найти метки для красного, синего, зеленого и т. Д. Любая помощь по этому поводу?

B = dendrogram(linkage_matrix,
               color_threshold=250,
               labels=df.session.tolist(),
               distance_sort='ascending')

введите описание изображения здесь


person Nilani Algiriyage    schedule 07.11.2014    source источник
comment
Можете ли вы добавить хотя бы несколько операторов импорта?   -  person Lukas    schedule 03.05.2018


Ответы (2)


Мне просто нужно было решить ту же проблему, но ответ выше неверен. Цвета из color_list соответствуют не цветам листьев, а цветам ссылок - пи-образных структур, соединяющих кластеры. Color_list и ivl даже не обязательно должны быть одинаковой длины.

Здесь вы можете найти способ получить метки листьев: http://nxn.se/post/90198924975/extract-cluster-elements-by-color-in-python

person Elżbieta Jankowska    schedule 11.09.2015

B или что-то еще, возвращаемое функцией дендрограммы, представляет собой словарь со следующими ключами:

print B.keys()
['ivl', 'dcoord', 'leaves', 'color_list', 'icoord']

color_list будет выглядеть примерно так:

print B['color_list']
['g', 'g', 'b', 'r', 'r', 'r', 'r', 'b']

И ivl будет выглядеть так:

print B['ivl']
['4', '1', '5', '6', '3', '2', '7', '0']

Осталось только составить список:

myInd = [i for i, c in zip(B['ivl'], B['color_list']) if c=='g']
print myInd
['4', '1']
person thefourtheye    schedule 10.11.2014