我正在尋找一種方法來分別在矩陣行和列上執行聚類,重新排列矩陣中的數據以反映聚類並將它們放在一起。聚類問題很容易解決,樹狀圖創建也很容易解決(例如在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