我正在寻找一种方法来分别对矩阵行和列执行集群,重新排序矩阵中的数据以反映集群并将其组合在一起。聚类问题很容易解决,创建树状图也很容易(例如在this blog或"Programming collective intelligence"中)。然而,如何对数据重新排序对我来说仍然不清楚。
最后,我正在寻找一种使用naive Python创建类似下图的图形的方法(使用任何“标准”库,如numpy、matplotlib等,但不使用using R或其他外部工具)。
(来源:warwick.ac.uk)
澄清
有人问我重新排序是什么意思。当您首先按矩阵行对矩阵中的数据进行聚类,然后按其列对数据进行聚类时,每个矩阵单元都可以通过在两个树状图中的位置进行标识。如果重新排列原始矩阵的行和列,使树状图中彼此接近的元素在矩阵中彼此接近,然后生成热图,则数据的群集可能对查看器变得明显(如上图所示)
我知道这是很晚的游戏,但我做了一个绘图对象的基础上,从这一页的帖子代码。它是在pip上注册的,所以要安装你只需要调用
在这里查看项目的github页面:https://github.com/themantalope/pydendroheatmap
请参阅下面部分复制到this related question的myrecent answer。
(来源:stevetjoa.com)
我不完全明白,但你们似乎是在尝试基于各种树状图指标重新索引数组的每个轴。我想这是假设在每个分支的描述中都有一些比较逻辑。如果是这样的话,这样做行吗以下内容:
x_idxs
和y_idxs
是树状图的标记。a
是未排序的矩阵。xi
和yi
是新的行/列数组指示符。a2
是分类矩阵,而x_idxs2
和y_idxs2
是新的分类树状图指标。这假设在创建树状图时,0
分支列/行总是相对大于/小于1
分支。如果您的yidx和xidx不是列表,而是numpy数组,那么您可以以类似的方式使用
np.argsort
。相关问题 更多 >
编程相关推荐