简介
我试图确认我对python中的层次化聚类工作原理的理解确实是正确的。因此,对于我具有MxN(M =行和N =列)的熊猫DataFrame,其中M是要测量的特征,N是患者。
就我而言,我有 83个特征(m1,m2,...,m83)和 6个患者(n1,n2,.. n6)。因此,对于每位患者,我测量了83个特征,并且我对每个患者分别代表哪些特征被过度描述和代表性不足以及基于这些特征的分组将患者分组在一起感兴趣。因此,我通过使用Seaborn软件包执行分层聚集聚类来输出带有相关树状图的热图来进行此操作。
因此,大多数示例通常包括一个MxN矩阵,其中N = 2,M可以是任意大小。在这种情况下,这将在图形中表示,因为我们的两列是二维图形中的x,y坐标。添加一个额外的患者/列将是在我的坐标系中添加一个额外的z参数,从而导致一个三维图,其中每个患者/列的所有M个功能部件的坐标为x,y,z。
熊猫数据框示例。
仅预览前三行和后三行。
(Pdb)feature_df
Patient1 Patient2 Patient3 Patient4 Patient5 Patient6
Feature1 4.686681 1.718879 0.772530 2.085830 2.755356 2.549348
Feature2 1.605639 1.098595 0.000000 0.084507 19.267667 4.056351
Feature3 0.000000 0.063615 0.010603 0.000000 0.005301 0.037109
... ... ... ... ... ... ...
Feature81 0.213393 0.000000 0.000000 0.000000 0.106696 0.000000
Feature82 2.628437 2.813818 0.933526 2.416573 0.695179 2.078915
Feature83 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
[83 rows x 6 columns]
代码
我对所有原始值为0(在log2转换为-inf但被0替换后)的原始值执行所有原始值的log2转换(原始值是每个功能的计数值,即A频率)。在热图中,但显然包含在聚类分析中。
feature_df = pd.DataFrame(features, columns=sample_list, index=gene_expression_list)
feature_df.applymap(np.log2).replace(float('-inf'),0)
mask = feature_df.isin(values=[0])
sns.clustermap(feature_df, metric="euclidean", method="ward",
mask=mask, cmap="Blues")
plt.show()
问题
欢迎任何建议,建议或想法。