gpt4 book ai didi

python - 使用 seaborn clustermap 在层次聚类中提取集群行

转载 作者:行者123 更新时间:2023-12-04 01:43:13 27 4
gpt4 key购买 nike

我正在使用 seaborn.clustermap 的层次聚类来聚类我的数据。这可以很好地在热图中很好地可视化集群。但是,现在我想提取分配给不同集群的所有行值。

这是我的数据的样子:

import pandas as pd

# load DataFrame
df = pd.read_csv('expression_data.txt', sep='\t', index_col=0)

df
    log_HU1         log_HU2
EEF1A1 13.439499 13.746856
HSPA8 13.169191 12.983910
FTH1 13.861164 13.511200
PABPC1 12.142340 11.885885
TFRC 11.261368 10.433607
RPL26 13.837205 13.934710
NPM1 12.381585 11.956855
RPS4X 13.359880 12.588574
EEF2 11.076926 11.379336
RPS11 13.212654 13.915813
RPS2 12.910164 13.009184
RPL11 13.498649 13.453234
CA1 9.060244 13.152061
RPS3 11.243343 11.431791
YBX1 12.135316 12.100374
ACTB 11.592359 12.108637
RPL4 12.168588 12.184330
HSP90AA1 10.776370 10.550427
HSP90AB1 11.200892 11.457365
NCL 11.366145 11.060236

然后我使用 seaborn 执行聚类,如下所示:

fig = sns.clustermap(df)

生成以下集群图: enter image description here

对于这个例子,我可以手动解释属于每个集群的值(例如 TFRC 和 HSP90AA1 集群)。但是,我计划对更大的数据集进行这些聚类分析。

所以我的问题是:有谁知道如何获取属于每个集群的行值?

谢谢,

最佳答案

将 scipy.cluster.hierarchy 模块与 fcluster 一起使用允许集群检索:

import pandas as pd
import seaborn as sns
import scipy.cluster.hierarchy as sch

df = pd.read_csv('expression_data.txt', sep='\t', index_col=0)

# retrieve clusters using fcluster
d = sch.distance.pdist(df)
L = sch.linkage(d, method='complete')
# 0.2 can be modified to retrieve more stringent or relaxed clusters
clusters = sch.fcluster(L, 0.2*d.max(), 'distance')

# clusters indicices correspond to incides of original df
for i,cluster in enumerate(clusters):
print(df.index[i], cluster)

输出:

EEF1A1 2
HSPA8 1
FTH1 2
PABPC1 3
TFRC 5
RPL26 2
NPM1 3
RPS4X 1
EEF2 4
RPS11 2
RPS2 1
RPL11 2
CA1 6
RPS3 4
YBX1 3
ACTB 3
RPL4 3
HSP90AA1 5
HSP90AB1 4
NCL 4

关于python - 使用 seaborn clustermap 在层次聚类中提取集群行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56526707/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com