2017-10-22 157 views
2

我在Python 3中做了一個凝聚層次聚類實驗,我發現scipy.cluster.hierarchy.cut_tree()沒有爲某些輸入鏈接矩陣返回請求數量的聚類。因此,現在我知道cut_tree()函數中存在一個錯誤(如here所述)。scipy.cluster.hierarchy.cut_tree()的替代方案

但是,我需要能夠得到一個平坦的羣集與k不同的標籤賦值給我的數據點。您是否知道使用任意輸入鏈接矩陣Z中的k標籤獲得平坦聚類的算法?我的問題歸結爲:我怎樣才能計算出什麼cut_tree()從零開始計算,沒有錯誤?

您可以用this dataset測試您的代碼。

旁註:另一種方法也許可以是使用rpy2cutree()爲SciPy的的cut_tree()的替代品,但我從來沒有使用過。你怎麼看?獲得k平集羣

回答

1

一種方法是使用scipy.cluster.hierarchy.fclustercriterion='maxclust'

from scipy.cluster.hierarchy import fcluster 
clust = fcluster(Z, k, criterion='maxclust') 
+0

你介意檢查[這個問題](https://stackoverflow.com/questions/47535256/how-to-make -fcluster到返回的-相同的輸出,如切樹)?看起來'fcluster'並不總是返回指定數量的簇,但也更少。謝謝! – Cleb