【发布时间】:2015-03-11 13:35:54
【问题描述】:
我正在使用seaborn clustermap 创建集群,并且在视觉上效果很好(这个example 产生非常相似的结果)。
但是,我无法弄清楚如何以编程方式提取集群。例如,在示例链接中,我怎样才能发现 1-1 rh、1-1 lh、5-1 rh、5-1 lh 是一个好的集群?视觉上很容易。我正在尝试使用查看数据和树状图的方法,但收效甚微
编辑示例代码:
import pandas as pd
import seaborn as sns
sns.set(font="monospace")
df = sns.load_dataset("brain_networks", header=[0, 1, 2], index_col=0)
used_networks = [1, 5, 6, 7, 8, 11, 12, 13, 16, 17]
used_columns = (df.columns.get_level_values("network")
.astype(int)
.isin(used_networks))
df = df.loc[:, used_columns]
network_pal = sns.cubehelix_palette(len(used_networks),
light=.9, dark=.1, reverse=True,
start=1, rot=-2)
network_lut = dict(zip(map(str, used_networks), network_pal))
networks = df.columns.get_level_values("network")
network_colors = pd.Series(networks).map(network_lut)
cmap = sns.diverging_palette(h_neg=210, h_pos=350, s=90, l=30, as_cmap=True)
result = sns.clustermap(df.corr(), row_colors=network_colors, method="average",
col_colors=network_colors, figsize=(13, 13), cmap=cmap)
如何从result 中提取哪些模型在哪些集群中?
EDIT2 result 确实带有 linkage 和 dendrogram_col,我认为它可以与 fcluster 一起使用。但是选择的阈值让我感到困惑。我会假设热图中高于阈值的值会聚集在一起?
【问题讨论】:
标签: python cluster-analysis hierarchical-clustering seaborn dendrogram