2009-09-23 148 views
9

我想使用correlation clustering和我的數字R是一個很好的開始。R中的相關聚類

我可以將數據作爲一組大的稀疏向量或作爲具有預先計算的相異性矩陣的表格呈現給R

我的問題是:

  • 都存在現有R功能與使用correlation clusteringagnes變成一個hierarchical cluster
  • 我將不得不手動執行(不可否認的)correlation clustering函數,如果是這樣的話,我該如何使它與agnes一起玩呢?

回答

7

我固然不是很瞭解這個問題,但只是把你指向一個方向:

  • 你看着集羣包?它有非常好的文檔。特別是,看看幫助(agnes)的一些建議。 Martin Maechler(R核心團隊的成員)創建了該軟件包,並對之前的Stack Overflow討論做出了貢獻,所以希望他會在這裏提供答案。
  • hclust()函數是stats包的一部分。事實上,我相信有計劃合併hclust()和agnes()。
  • 您可能還會發現this page from the Bioconductor project helpful
  • 否則,您可能會看到CRAN上的其他程序包有一些運氣Clustering,Natural Language ProcessingMachine Learning的意見。
+0

感謝您的參考 – daveb 2009-09-24 17:22:52

+0

沒問題。當你想出所有的東西時,隨時發佈任何後續回覆到這個問題! :) – Shane 2009-09-24 21:30:13

7

標準的做法是一個涉及cor()hclust()plot.hclust()。 我強烈推薦heatmap.2從美妙的gplots包。

1

我去了http://www.rseek.org/並輸入了agnes算法,發現CRAN上的CLUSTER包具有以下函數AGNES的功能細節。

詳細

艾格妮絲在第5章Kaufman和Rousseeuw(1990)的 被充分地描述。 相比其他凝聚 聚類方法如hclust, 艾格尼絲具有以下特徵:(a) 它產生的凝聚 係數(參見agnes.object),其 措施發現聚類 結構的量;和(b)除了通常的樹木 之外,它還提供了 橫幅,一種新穎的圖形顯示(參見 plot.agnes)。

agnes算法構造一個聚類的層次結構 。起初, 每個觀察是由 本身的一個小集羣。合併羣集,直到只有 一個大羣集仍然存在,其中 包含所有的觀察結果。在每個 階段,兩個最近的聚類組合爲 ,以形成一個更大的聚類。

對於方法=「平均」,該距離 兩者之間簇是 的相異性的 其它羣集中的點 在一個簇和點之間的平均。在method =「single」中,我們 使用第一個簇中的一個點與第二個簇中的 點(最接近的 鄰居方法)之間的最小差異性 。當 method =「complete」時,我們使用 第一個簇中的點與 第二個簇(最遠的鄰居 方法)之間的最大 差異性。

集羣是一個相當巨大的話題,你會發現R的許多包實現它的一些形式。當你有屬性和協變量時,把聚類和協調結合起來有時可以產生更多的見解。

2

集羣包中使用差異矩陣很容易使用agnes函數。只需將「diss」參數設置爲TRUE即可。

如果你可以很容易地計算R之外的相異矩陣,那麼這可能是一條路。否則,可以使用R中的cor函數來生成相似度矩陣(從中可以通過從1中減去得到相異度矩陣)。