使用R語言可以輕松實現(xiàn)聚類分析,,stats、cluster,、fpc和mclust是常用的四個聚類分析軟件包,。 stats主要包含一些基本的統(tǒng)計函數(shù),如用于統(tǒng)計計算和隨機數(shù)生成等,; cluster專用于聚類分析,,包含很多聚類相關的函數(shù)及數(shù)據(jù)集; fpc含有若干聚類算法函數(shù),,如固定點聚類,、線性回歸聚類、DBSCAN聚類等,; mclust主要用于處理基于高斯混合模型,,通過EM算法實現(xiàn)的聚類、分類以及密度估計等問題,。
下面依次對4種算法的核心函數(shù)進行介紹 kmeans函數(shù) K-均值算法在R語言中實現(xiàn)的核心函數(shù)為kmeans(),,來源于stats軟件包,該函數(shù)的基本格式為“ kmeans(x, centers, iter.max=10, nstart=1, algorithm=c("Hartigan-Wong","Lloyd","For-gy","MacQueen")) 其中x為進行聚類分析的數(shù)據(jù)集,;centers為預設類別數(shù)k,;iter.max為迭代的最大值,,且默認值為10;nstart為選擇隨機起始中心點的次數(shù),,默認取1,;而參數(shù)algorithm則提供了4種算法選擇,默認Hartigan-Wong算法,。 pam函數(shù) K-中心點算法用R實現(xiàn)的核心函數(shù)為cluster軟件包中pam(),,該函數(shù)的基本格式為: pam(x, k, diss=inherits(x, "dist"), metric="euclidean",medoids=NULL, stand=FALSE, cluster.only=FALSE, do.swap=TRUE, keep.diss=!diss && !cluster.only && n < 100, keep.data=!diss && !cluster.only, pamonce=FALSE, trace.lev=0) 其中x、k分別表示待處理數(shù)據(jù)及類別數(shù),;metric參數(shù)用于選擇樣本點間距離測算的方式,,可供選擇的有”euclidean“與”manhattan“;medoids默認取NULL,,即由軟件選擇大專證初始中心點樣本,,也可以認定一個k維向量來指定初始點;stand用于選擇對數(shù)據(jù)進行聚類前是否需要進行標準化,;cluster.only用于選擇是否僅獲取個樣本所歸屬的類別(Cluster vector)這一項聚類結果,,若選擇TRUE,則聚類過程效率更高,;keep.data選擇是否在聚類結果中保留數(shù)據(jù)集,。 dbscan函數(shù) dbscan()函數(shù)用于實現(xiàn)DBSCAN聚類算法,其函數(shù)格式如下: dbscan(data,eps,MinPts=5,scale=FALSE,method=c("hybrid","raw","dist"),seeds=TRUE,showplot=FALSEcountmode=NULL) 其中,,data為待聚類數(shù)據(jù)集或距離矩陣,;eps為考察每一樣本點是否滿足密度要求時,所劃定考察鄰域的半徑,;MinPts為密度閾值,,當考察點eps鄰域內(nèi)的樣本點數(shù)大于或等于MinPts時,該點才被認為是核心對象,,否則為邊緣點,;scale用于選擇是否在聚類前先對數(shù)據(jù)集進行標準化;method參數(shù)用于選擇如何看待data,,具體的,,”hybrid“表示data為距離矩陣,”raw“表示data為原始數(shù)據(jù)集,,且不計算其距離矩陣,,”dist“也將data視為原始數(shù)據(jù)集,但計算局部聚類矩陣,;showplot用于選擇是否輸出聚類結果示意圖,,取值為0、1,、2,,分別表示不繪圖,、每次迭代都繪圖、僅對子迭代過程繪圖,。 hclust,、cutree及rect.hclust函數(shù) 這三個函數(shù)都來源于stats軟件包,在系譜聚類過程中發(fā)揮著各自不同的作用,。 核心函數(shù)為hclust(),用來實現(xiàn)系譜聚類算法,,其基本格式十分簡單,,僅含有三個參數(shù): hclust(d, method="complete",members=NULL) 其中,d為待處理數(shù)據(jù)集樣本間的距離矩陣,,可用dist()函數(shù)計算得到,;method參數(shù)用于選擇聚類的具體算法,可供選擇的有ward,、single及complete等7種,,默認選擇complete方法;參數(shù)members用于指出每個待聚類樣本點/簇是由幾個單樣本構成,,如共有5個待聚類樣本點/簇,,當我們設置members=rep(2,5)則表明每個樣本點/簇分別是有2個單樣本聚類的結果,該參數(shù)默認值為NULL,,表示每個樣本點本身即為單樣本,。 而cutree()函數(shù)則可以對hclust()函數(shù)的聚類結果進行剪枝,即選擇輸出指定類別數(shù)的系譜聚類結果,,其格式為: cutree(tree, k=NULL, h=NULL) 其中,,tree為hclust()的聚類結果,參數(shù)k與h用于控制選擇輸出的結果,。 rect.hclust()函數(shù)可以在plot()函數(shù)形成的系譜圖中將指定類別中的樣本分支用方框表示出來,,十分有助于直觀分析聚類結果,其基本格式為: rect.hclust(tree, k=NULL, which=NULL, x=NULL, h=NULL, border=2, cluster=NULL) Mclust,、mclustBIC,、mclust2Dplot及densityMclust函數(shù) 這4個函數(shù)來源于mclust軟件包,其中Mclust()函數(shù)為進行EM聚類的核心函數(shù),,基本格式為: Mclust(data, G=NULL, modeNames=NULL, prior=NULL, control=emControl(), initialization=NULL, warn=FALSE, ...) 其中,,data用于放置待處理數(shù)據(jù)集,G為預設類別數(shù),,默認值為1~9,,即由軟件根據(jù)BIC的值在1~9中選擇最優(yōu)值;modeNames用于設定模型類別,,該參數(shù)和G一樣也可由函數(shù)自動選取最優(yōu)值,。 mclustBIC()函數(shù)的參數(shù)設置與Mclust基本一致,,用于獲取數(shù)據(jù)集所對應的參數(shù)化高斯混合模型的BIC值,而BIC值的作用即是評價模型的優(yōu)劣,,BIC值越高模型越優(yōu),。mclust2Dplot()函數(shù)可根據(jù)EM算法所生成參數(shù)對二維數(shù)據(jù)制圖。而densityMclust()函數(shù)利用Mclust()的聚類結果對數(shù)據(jù)集中的每個樣本點進行密度估計,。 |
|
來自: 新用戶26922hFh > 《待分類》