Matlab提供系列函數(shù)用于聚類(lèi)分析,歸納起來(lái)具體方法有如下:
方法一:直接聚類(lèi),利用clusterdata函數(shù)對(duì)樣本數(shù)據(jù)進(jìn)行一次聚類(lèi),其缺點(diǎn)為可供用戶(hù)選擇的面較窄,不能更改距離的計(jì)算方法,該方法的使用者無(wú)需了解聚類(lèi)的原理和過(guò)程,但是聚類(lèi)效果受限制。
方法二:層次聚類(lèi),該方法較為靈活,需要進(jìn)行細(xì)節(jié)了解聚類(lèi)原理,具體需要進(jìn)行如下過(guò)程處理:(1)找到數(shù)據(jù)集合中變量?jī)蓛芍g的相似性和非相似性,用pdist函數(shù)計(jì)算變量之間的距離;(2)用 linkage函數(shù)定義變量之間的連接;(3)用 cophenetic函數(shù)評(píng)價(jià)聚類(lèi)信息;(4)用cluster函數(shù)創(chuàng)建聚類(lèi)。
方法三:劃分聚類(lèi),包括K均值聚類(lèi)和K中心聚類(lèi),同樣需要系列步驟完成該過(guò)程,要求使用者對(duì)聚類(lèi)原理和過(guò)程有較清晰的認(rèn)識(shí)。
接下來(lái),介紹Matlab中的相關(guān)函數(shù)和相關(guān)聚類(lèi)方法。
1.Matlab中相關(guān)函數(shù)介紹
1.1 pdist函數(shù)
調(diào)用格式:Y=pdist(X,’metric’)
說(shuō)明:用 ‘metric’指定的方法計(jì)算 X 數(shù)據(jù)矩陣中對(duì)象之間的距離。’
X:一個(gè)m×n的矩陣,它是由m個(gè)對(duì)象組成的數(shù)據(jù)集,每個(gè)對(duì)象的大小為n。
metric’取值如下:
‘euclidean’:歐氏距離(默認(rèn));‘seuclidean’:標(biāo)準(zhǔn)化歐氏距離;
‘mahalanobis’:馬氏距離;‘cityblock’:布洛克距離;
‘minkowski’:明可夫斯基距離;‘cosine’:
‘correlation’: ‘hamming’:
‘jaccard’: ‘chebychev’:Chebychev距離。
1.2 squareform函數(shù)
調(diào)用格式:Z=squareform(Y,..)
說(shuō)明: 強(qiáng)制將距離矩陣從上三角形式轉(zhuǎn)化為方陣形式,或從方陣形式轉(zhuǎn)化為上三角形式。
1.3 linkage函數(shù)
調(diào)用格式:Z=linkage(Y,’method’)
說(shuō) 明:用‘method’參數(shù)指定的算法計(jì)算系統(tǒng)聚類(lèi)樹(shù)。
Y:pdist函數(shù)返回的距離向量;
method:可取值如下:
‘single’:最短距離法(默認(rèn)); ‘complete’:最長(zhǎng)距離法;
‘a(chǎn)verage’:未加權(quán)平均距離法; ‘weighted’: 加權(quán)平均法;
‘centroid’:質(zhì)心距離法; ‘median’:加權(quán)質(zhì)心距離法;
‘ward’:內(nèi)平方距離法(最小方差算法)
返回:Z為一個(gè)包含聚類(lèi)樹(shù)信息的(m-1)×3的矩陣。
1.4 dendrogram函數(shù)
調(diào)用格式:[H,T,…]=dendrogram(Z,p,…)
說(shuō)明:生成只有頂部p個(gè)節(jié)點(diǎn)的冰柱圖(譜系圖)。
1.5 cophenet函數(shù)
調(diào)用格式:c=cophenetic(Z,Y)
說(shuō)明:利用pdist函數(shù)生成的Y和linkage函數(shù)生成的Z計(jì)算cophenet相關(guān)系數(shù)。
1.6 cluster 函數(shù)
調(diào)用格式:T=cluster(Z,…)
說(shuō)明:根據(jù)linkage函數(shù)的輸出Z 創(chuàng)建分類(lèi)。
1.7 clusterdata函數(shù)
調(diào)用格式:T=clusterdata(X,…)
說(shuō)明:根據(jù)數(shù)據(jù)創(chuàng)建分類(lèi)。
T=clusterdata(X,cutoff)與下面的一組命令等價(jià):
Y=pdist(X,’euclid’);
Z=linkage(Y,’single’);
T=cluster(Z,cutoff);
2. Matlab聚類(lèi)程序的設(shè)計(jì)
2.1方法一:一次聚類(lèi)法
X=[11978 12.5 93.5 31908;…;57500 67.6 238.0 15900];
T=clusterdata(X,0.9)
2.2 方法二和方法三設(shè)計(jì)流程:分步聚類(lèi)
Step1 尋找變量之間的相似性
用pdist函數(shù)計(jì)算相似矩陣,有多種方法可以計(jì)算距離,進(jìn)行計(jì)算之前最好先將數(shù)據(jù)用zscore函數(shù)進(jìn)行標(biāo)準(zhǔn)化。
X2=zscore(X); %標(biāo)準(zhǔn)化數(shù)據(jù)
Y2=pdist(X2); %計(jì)算距離
Step2 定義變量之間的連接
Z2=linkage(Y2);
Step3 評(píng)價(jià)聚類(lèi)信息
C2=cophenet(Z2,Y2); //0.94698
Step4 創(chuàng)建聚類(lèi),并作出譜系圖
評(píng)論