每R一點:層次聚類分析實例實戰-dist、hclust、heatmap等(轉)


聚類分析:對樣品或指標進行分類的一種分析方法,依據樣本和指標已知特性進行分類。本節主要介紹層次聚類分析,一共包括3個部分,每個部分包括一個具體實戰例子。

 

1、常規聚類過程:


一、首先用dist()函數計算變量間距離
dist.r = dist(data, method=" ")
其中method包括6種方法,表示不同的距離測度:"euclidean", "maximum", "manhattan", "canberra", "binary" or "minkowski"。相應的意義自行查找。

 

二、再用hclust()進行聚類
hc.r = hclust(dist.r, method = “ ”)
其中method包括7種方法,表示聚類的方法:"ward", "single", "complete","average", "mcquitty", "median" or "centroid"。相應的意義自行查找。

 

三、畫圖
plot(hc.r, hang = -1,labels=NULL) 或者plot(hc.r, hang = 0.1,labels=F)
hang 等於數值,表示標簽與末端樹杈之間的距離,
若是負數,則表示末端樹杈長度是0,即標簽對齊。
labels 表示標簽,默認是NULL,表示變量原有名稱。labels=F :表示不顯示標簽。

 

實例介紹:

 

特殊情況用法:

當用已知距離矩陣進行聚類時,即變量間的距離已經計算完,只是想用
已知的距離矩陣進行聚類。這時,需將距離矩陣轉成dist類型。
然后再執行hclust()聚類和plot()畫圖。

# mydata作為距離矩陣,且為正方矩陣
mydata<-matrix(1:25,ncol=5);
class(mydata);
 
# 把mydata變成dist類型
mydist<-as.dist(mydata);
class(mydist);
[1] "dist"
 
myhc<-hclust(mydist,method="complete");
myhc;
 
Call:
hclust(d = mydist, method ="complete")
 
Cluster method   : complete
Number of objects: 5
 
plot(myhc,hang=0.1)

2、熱圖聚類過程:


一、首先用dist()函數計算變量間距離
dist.r = dist(data, method=" ")

 

二、用heatmap()函數進行熱點圖聚類
對於heatmap中具體參數,這里不做過多介紹,可在幫助文檔中找說明。除此heatmap函數之外,gplots包中的heatmap.2()函數,也可以做熱點圖聚類。


其中參數不做過多描述。若有需求,請分享並回復:heatmap.2

即可得到答案。

實戰例子:

require(graphics);
dist.r<-dist(USArrests,method="euclidean") # 方法:歐氏距離
dist.r

 
#聚類並畫圖
heatmap(as.matrix(dist.r))

3、多維標度和聚類的結果


MDS方法對距離矩陣進行降維,用不同的顏色來表示聚類的結果。
另一種聚類效果展示。

 

例子:

 

轉自:http://mp.weixin.qq.com/s?__biz=MzA3NDUxMjYzMA==&mid=209248280&idx=2&sn=c0ec5d9a9b060654ffdaad3d6911a812#rd

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM