我正在使用seaborn clustermap
创建聚类图表,视觉效果很好(此示例生成非常相似的结果)。
但是,我无法找出如何编程提取这些聚类。例如,在示例链接中,我该如何找到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
中带有与dendrogram_col
相关的linkage
,我认为这可以与fcluster一起使用。但是选择阈值的值让我感到困惑。我会假设热图中高于阈值的值会被聚类在一起?
1-np.abs(correlations)
之类的东西? - O.rkasns.clustermap()
是来自于问题中引用的seaborn示例,我只是复制了它。两个版本都计算相关性之间的距离,因此最终实际上使用的是距离,但我承认我不知道这样做有多少意义(我不知道为什么seaborn示例会这样做)。在我的项目中,我直接使用距离。 - Marcel M