上determining the number of clusters in a dataset維基百科的文章指出,我不需要使用分層聚類時,擔心這樣的問題。但是,當我嘗試使用scikit-learn的agglomerative clustering時,我發現我必須爲它提供羣集數作爲參數「n_clusters」 - 沒有這個參數我得到了兩個羣集的硬編碼默認值。在這種情況下,如何才能爲數據集選擇正確數量的羣集?維基文章是錯誤的嗎?選擇在heirarchical聚集集簇羣的數量與scikit
4
A
回答
3
維基百科被簡單地使這無關與現實生活的極度簡化。分層聚類不避免聚類數量爲的問題。簡單地說 - 它構建了跨越所有樣本的樹,該樣本顯示哪些樣本(稍後在羣集中)合併在一起以創建更大的羣集。發生這種情況直到你有兩個簇(這就是爲什麼默認的簇數是2),它們被合併到整個數據集中。你獨自一人在樹上「切割」以獲得實際的聚類。一旦你適應AgglomerativeClustering你可以遍歷整個樹和分析,以保持其集羣
import numpy as np
from sklearn.cluster import AgglomerativeClustering
import itertools
X = np.concatenate([np.random.randn(3, 10), np.random.randn(2, 10) + 100])
clustering = AgglomerativeClustering()
clustering.fit(X)
[{'node_id': next(itertools.count(X.shape[0])), 'left': x[0], 'right':x[1]} for x in clustering.children_]
0
ELKI(不scikit學習,但Java)有一定數量的提取一層次聚類簇先進的方法。例如,它們比在特定高度處切割樹更聰明,但它們可以產生最小尺寸的簇的層次結構。
你可以檢查,如果這些方法爲你工作。
相關問題
- 1. 複合羣集PK行爲與非羣集PK +非唯一聚簇索引
- 2. DBSCAN集羣簇(sklearn python)
- 3. 使用scikit-learn DecisionTreeClassifier集羣
- 4. 從非聚簇更改主鍵聚集
- 5. GraphViz - 在多行中創建集羣簇
- 6. 羣集索引和非聚簇索引 - SQL Server和Oracle?
- 7. 譜集羣Scikit學習集羣中的打印項目
- 8. 如何選擇聚集與雄辯
- 9. 使用scikit-learn獲取集羣成員/元素集羣DBSCAN
- 10. 羣集中的HDFS聚類
- 11. 用Scikit確定新文檔的集羣
- 12. Linq的順序由聚集在選擇{}
- 13. 增量羣集與ELKI
- 14. 通過羣集或非聚集索引
- 15. 節點和集羣和簇到簇鏈接使用D3
- 16. DBSCAN集羣 - 當一個簇的邊界點被認爲是另一個集羣
- 17. 連續數天MySQL羣組和聚集
- 18. 哪個選擇語句是更快1)簇2)非聚集3)沒有索引
- 19. Sybase非聚簇索引選擇
- 20. kmeans集羣中的集羣錯誤數
- 21. 聚集與
- 22. SQL查詢來選擇與非集合值表達和聚集函數列
- 23. 將scikit-learn與pyspark集成
- 24. 集羣PostgreSQL的集羣
- 25. 如何在此環境中形成羣集並選擇羣集標頭?
- 26. Hadoop集羣與碼頭羣
- 27. Akka 2.1集羣設計選擇
- 28. scikit學習集羣:預測(X)與fit_predict(X)
- 29. Heirarchical選擇步驟Drupal 6
好問題。當我遇到類似問題時,我最終使用scipy例程進行層次聚類,可視化樹,然後「手動」(查看樹後)設置切割閾值。 – lanenok
似乎與https://github.com/scikit-learn/scikit-learn/issues/3796有關 – yangjie