我正在寻找一种方法来分别在矩阵行和列上执行聚类,重新排列矩阵中的数据以反映聚类并将它们放在一起。聚类问题很容易解决,树状图创建也很容易解决(例如在this blog或"Programming collective intelligence"中)。但是,如何重新排序数据仍然不清楚。最终,我正在寻找一种使用朴素Python(使用任何“标准”库(如numpy,matplotlib等),但没有using R或其他外部工具)创建类似于下图的图表。重新排序矩阵元素,以反映列和行聚类naiive python
dendogram http://www2.warwick.ac.uk/fac/sci/moac/currentstudents/peter_cock/r/heatmap/no_scaling.png
澄清
有人问我,我的意思的重新排序。当您首先按照矩阵行对矩阵中的数据进行聚类时,那么通过其列可以通过两个树形图中的位置来识别每个矩阵单元。如果您对原始矩阵的行和列进行重新排序,使得树状图中彼此靠近的元素在矩阵中彼此靠近,然后生成热图,则数据的聚类对于观察者可能变得明显(如上图所示)
你说的重新排序是什么意思?用另一个n交换n个相邻行/列? – 2010-03-16 15:45:21
你想在处理矩阵时使用numpy/scipy。 Matplotlib也很好地模拟了Matlab。这是一个交易:如果你可以在Matlab中做到这一点,你也可以在scipy中做到这一点(如果有的话,简单的语法差异)。 – 2010-03-16 15:50:22
哦,+1的漂亮图片;-) – 2010-03-21 16:58:27