我对这个模块(scipy.cluster.hierarchy)感到困惑......还有一些!
例如,我们有以下树形图:

我的问题是如何以一种漂亮的格式提取彩色子树(每个子树代表一个簇),比如SIF格式?现在获得上述情节的代码是:
import scipy
import scipy.cluster.hierarchy as sch
import matplotlib.pylab as plt
scipy.randn(100,2)
d = sch.distance.pdist(X)
Z= sch.linkage(d,method='complete')
P =sch.dendrogram(Z)
plt.savefig('plot_dendrogram.png')
T = sch.fcluster(Z, 0.5*d.max(), 'distance')
#array([4, 5, 3, 2, 2, 3, 5, 2, 2, 5, 2, 2, 2, 3, 2, 3, 2, 5, 4, 5, 2, 5, 2,
# 3, 3, 3, 1, 3, 4, 2, 2, 4, 2, 4, 3, 3, 2, 5, 5, 5, 3, 2, 2, 2, 5, 4,
# 2, 4, 2, 2, 5, …Run Code Online (Sandbox Code Playgroud) 我想用我用字典(即{leaf: color})形式制作的彩色地图为我的星团着色.
我试过跟随https://joernhees.de/blog/2015/08/26/scipy-hierarchical-clustering-and-dendrogram-tutorial/,但由于某种原因颜色搞砸了.默认情节看起来不错,我只是想以不同方式分配这些颜色.我看到有一个link_color_func,但当我尝试使用我的色彩图(D_leaf_color字典)时,我得到一个错误b/c它不是一个功能.我创建D_leaf_color了自定义与特定群集关联的叶子的颜色.在我的实际数据集中,颜色意味着什么,所以我正在转向任意颜色分配.
我不想color_threshold在我的实际数据中使用b/c,我有更多的簇并SciPy重复颜色,因此这个问题...
如何使用我的叶色字典来自定义树形图簇的颜色?
我做了一个GitHub问题https://github.com/scipy/scipy/issues/6346,在那里我进一步详细阐述了解释SciPy层次聚类树形图输出的叶子着色方法 ?(也许发现了一个错误...)但我仍然无法弄清楚如何实际:(i)使用树状图输出用我指定的颜色字典重建我的树形图或(ii)重新格式化我的D_leaf_color字典link_color_func参数.
# Init
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
# Load data
from sklearn.datasets import load_diabetes
# Clustering
from scipy.cluster.hierarchy import dendrogram, fcluster, leaves_list
from scipy.spatial import distance
from fastcluster import linkage # You can use SciPy one too …Run Code Online (Sandbox Code Playgroud) python machine-learning hierarchical-clustering dendrogram scipy