2015-05-23 39 views
0

所以,我有一套我想對其進行聚類分析的文本。我已經採取了一切文本之間的Normalized Compression Distance,現在我已經基本建成加權邊的完整的圖形,看起來是這樣的:如何將距離數據插入scipy的凝聚式聚類方法?

text1, text2, 0.539 
text2, text3, 0.675 

我有巨大的困難,找出堵塞這個數據的最佳方式融入scipy的層次聚類方法。我可以將距離數據轉換成類似this page的表格。我怎樣才能格式化這些數據,以便它可以很容易地插入到scipy的HAC代碼中?

回答

1

您正處在正確的軌道上,將數據轉換爲鏈接頁面上的表格(冗餘距離矩陣)。根據文檔,您應該能夠將其直接傳遞到scipy.cluster.hierarchy.linkage或相關函數,例如scipy.cluster.hierarchy.singlescipy.cluster.hierarchy.complete。相關函數明確指定應如何計算羣集之間的距離。 scipy.cluster.hierarchy.linkage可讓您指定所需的任何方法,但默認爲單個鏈接(即兩個集羣之間的距離是其最近點之間的距離)。所有這些方法將返回一個表示凝聚聚類的多維數組。然後,您可以使用scipy.cluster.hierarchy模塊的其餘部分對該羣集執行各種操作,例如對其進行可視化或展平。

但是,有一個問題。在編寫this question的時候,儘管文檔說明了可以,但實際上不能使用冗餘距離矩陣。基於github issue仍然開放的事實,我認爲這還沒有解決。正如鏈接問題的答案中所指出的那樣,您可以通過將完整的距離矩陣傳遞到scipy.spatial.distance.squareform函數來解決此問題,該函數將其轉換爲實際接受的格式(包含上三角部分的平面數組距離矩陣,稱爲濃縮距離矩陣)。然後,您可以將結果傳遞給scipy.cluster.hierarchy函數之一。