具有> 3个功能的分层聚集聚类

时间:2018-12-05 12:41:50

标签: python-3.x pandas data-science hierarchical-clustering

简介

我试图确认我对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()

Heatmap of clustered features

问题

  1. 我的上述理解正确吗?
  2. 如果是这样,那么对于3个维度以上的数据集(3位患者),我认为哪种距离方法是有效的,因为我假设欧几里得距离距离不是最可表示的?
  3. 最后,如果我的理解是正确的,我可以看到如何创建树状图以对特征/行进行聚类,但是我看不到如何创建树状图以将患者/列进行聚类。

欢迎任何建议,建议或想法。

0 个答案:

没有答案