溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

非層次聚類中clusplot()函數(shù)怎么用

發(fā)布時(shí)間:2022-01-05 15:53:17 來源:億速云 閱讀:373 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要講解了“非層次聚類中clusplot()函數(shù)怎么用”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“非層次聚類中clusplot()函數(shù)怎么用”吧!

k-中心點(diǎn)劃分    

k-means算法中選取的是距離均值,那么異常點(diǎn)對(duì)其的影響會(huì)非常大,很可能這種孤立的點(diǎn)就聚為一類,一個(gè)改進(jìn)的方法就是圍繞實(shí)際數(shù)據(jù)的中心點(diǎn)進(jìn)行劃分(partitioning aroundmedoids,PAM),也叫k-medoids clustering。其與k-means算法類似,從所有數(shù)據(jù)觀測(cè)點(diǎn)尋找k個(gè)代表性的對(duì)象或形心點(diǎn),來反應(yīng)數(shù)據(jù)的主體結(jié)構(gòu),然后將所有觀測(cè)點(diǎn)分配給每個(gè)形心點(diǎn)構(gòu)建k個(gè)分類簇。不斷迭代來尋找k個(gè)代表對(duì)象,來獲得最佳的形心點(diǎn)來使得對(duì)象間的相異性總和最小。

k-medoids算法是k-means算法的變種,其不一樣的地方在于聚類中心的選取。在k-means算法中將聚類中心選取為當(dāng)前cluster中所有數(shù)據(jù)點(diǎn)的平均值,也即非真實(shí)的數(shù)據(jù)點(diǎn);然而k-medoids算法中,將聚類中心也即中心點(diǎn)的選取限制在當(dāng)前cluster所包含的數(shù)據(jù)點(diǎn)的集合中,從當(dāng)前cluster中選取到其他所有點(diǎn)的距離之和最小的點(diǎn)作為中心點(diǎn)。k-means和k-medoids之間的差異就類似于一個(gè)數(shù)據(jù)樣本的均值和中位數(shù)之間的差異。

cluster包中的pam()函數(shù)可以使用原始數(shù)據(jù)或者距離矩陣進(jìn)行分析,因此十分方便,還可以通過輪廓寬度值確定最佳的分組數(shù)量,而fpc包中的pamk()函數(shù)可以自動(dòng)計(jì)算最佳的分類簇?cái)?shù)目,實(shí)例分析如下所示:

#讀取數(shù)據(jù)data=read.table(file="otu_table.txt", header=TRUE, check.names=FALSE)rownames(data)=data[, 1]data=as.matrix(data[, -1])#將每個(gè)樣品的物種數(shù)據(jù)進(jìn)行總和標(biāo)準(zhǔn)化(即求相對(duì)豐度)library(vegan)data=decostand(data, MARGIN=2, "total")*100otu=t(data)#計(jì)算距離矩陣otu_dist=vegdist(otu, method="bray", diag=TRUE, upper=TRUE, p=2)#PAM聚類library(fpc)library(cluster)#確定最佳聚類簇?cái)?shù)目pambest=pamk(otu_dist)k=pambest$ncotu_pam=pam(otu_dist, k)mycol=c(99,81,503,562,76,96,495,52,619,453,71,134,448,548,655,574,36,544,89,120,131,596,147,576,58,429,386,122,87,404,466,124,463,552,147,45,30,54,84,256,100,652,31,610,477,150,50,588,621)mycol=colors()[mycol]clusplot(otu_pam, color=TRUE, labels=3, lines=0, cex=1, col.clus=mycol[1:k], col.p=otu_pam$clustering)

clusplot()函數(shù)可以對(duì)聚類結(jié)果進(jìn)行主成分分析并作圖,結(jié)果如下所示:

非層次聚類中clusplot()函數(shù)怎么用

根據(jù)pamk()函數(shù)計(jì)算結(jié)果最佳聚類簇?cái)?shù)目為10,但主成分聚類圖顯示的聚類簇?cái)?shù)目要小于10,可以看到不同算法的差異。我們也可以針對(duì)PAM聚類繪制輪廓寬度圖,從而幫助挑選最佳聚類簇?cái)?shù)目,如下所示:

#繪制輪廓寬度圖asw=numeric(nrow(otu))for (i in 2:(length(asw)-1)) {  asw[i]=pam(otu_dist, i)$silinfo$avg.width}k.best=which.max(asw)plot(1:length(asw), asw, type="h", main="Silhouette of PAM", lwd=2,     xlab="k(number of clusters", ylab="average silhouette")

結(jié)果如下所示:

非層次聚類中clusplot()函數(shù)怎么用

當(dāng)k=22時(shí)取得最高的輪廓寬度,這與事實(shí)是相符的,因?yàn)槲覀兯脭?shù)據(jù)的66個(gè)樣品采自22個(gè)樣品點(diǎn),每個(gè)點(diǎn)3個(gè)平行樣。但總體來看,輪廓寬度值很高,因此不一定挑選k=22,這里只是為pamk()函數(shù)判斷結(jié)果作參考。

不同算法的側(cè)重不同,因此結(jié)果會(huì)有一些差異。這些算法都可以作為我們的工具庫(kù),我們?cè)趯?shí)際研究中可以選擇適合自己數(shù)據(jù)的算法。在公眾號(hào)對(duì)話框回復(fù)“聚類分析”可獲得示例數(shù)據(jù)下載鏈接。

感謝各位的閱讀,以上就是“非層次聚類中clusplot()函數(shù)怎么用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)非層次聚類中clusplot()函數(shù)怎么用這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI