用matlab做聚類分析 .

說明:如果是要用matlab做kmeans聚類分析,直接使用函數kmeans即可。使用方法:kmeans(輸入矩陣,分類個數k)。

 

轉載一:

MATLAB提供了兩種方法進行聚類分析:

1、利用 clusterdata 函數對數據樣本進行一次聚類,這個方法簡潔方便,其特點是使用範圍較窄,不能由用戶根據自身需要來設定參數,更改距離計算方法;

2、分步聚類:( 1)用 pdist函數計算變量之間的距離,找到數據集合中兩輛變量之間的相似性和非相似性;( 2)用 linkage函數定義變量之間的連接;( 3)用 cophenetic函數評價聚類信息;( 4)用 cluster函數進行聚類。

下邊詳細介紹兩種方法:

1、一次聚類

Clusterdata函數可以視爲 pdist linkage cluster的綜合,一般比較簡單。

clusterdata函數:

調用格式: T=clusterdata(X,cutoff)     

                      等價於Y=pdist(X,’euclid’); Z=linkage(Y,’single’); T=cluster(Z,cutoff) 

2、分步聚類

1)求出變量之間的相似性

pdist函數計算出相似矩陣,有多種方法可以求距離,若此前數據還未無量綱化,則可用 zscore函數對其標準化

pdist函數: 調用格式: Y=pdist(X,’metric’)

 說明: X M*N矩陣,爲由 M個樣本組成,每個樣本有 N個字段的數據集

        metirc取值爲:’ euclidean’:歐氏距離(默認) ‘seuclidean’:標準化歐氏距離; ‘mahalanobis’:馬氏距離

pdist生成一個 M*(M-1)/2個元素的行向量,分別表示 M個樣本兩兩間的距離。這樣可以縮小保存空間,不過,對於讀者來說卻是不好操作,因此,若想簡單直觀的表示,可以用 squareform函數將其轉化爲方陣,其中 x(i,j)表示第 i個樣本與第 j個樣本之的距離,對角線均爲 0.

2)用 linkage函數來產生聚類樹

linkage函數: 調用格式: Z=linkage(Y,’method’)

說明: Y pdist函數返回的 M*(M-1)/2個元素的行向量,

  method可取值: ‘single’:最短距離法(默認); ’complete’:最長距離法;

                                  ‘average’:未加權平均距離法; ’weighted’:加權平均法

                                 ‘centroid’ 質心距離法;       ‘median’:加權質心距離法;

                                 ‘ward’:內平方距離法(最小方差算法)

返回的 Z爲一個 (M-1)*3的矩陣,其中前兩列爲索引標識,表示哪兩個序號的樣本可以聚爲同一類,第三列爲這兩個樣本之間的距離。另外,除了 M個樣本以外,對於每次新產生的類,依次用 M+1 M+2來標識。

爲了表示 Z矩陣,我們可以用更直觀的聚類數來展示, 方法爲: dendrogram(Z), 產生的聚類數是一個 n型樹,最下邊表示樣本,然後一級一級往上聚類,最終成爲最頂端的一類。縱軸高度代表距離列。

         另外,還可以設置聚類數最下端的樣本數,默認爲 30,可以根據修改 dendrogram(Z,n)參數 n來實現, 1<n<M dendrogram(Z,0)則表 n=M的情況,顯示所有葉節點。

3)用 cophenetic函數評價聚類信息

cophenet函數:   調用格式: c=cophenetic(Z,Y)

  說明:利用 pdist函數生成的 Y linkage函數生成的 Z計算 cophenet相關係數。】

cophene檢驗一定算法下產生的二叉聚類樹和實際情況的相符程度 ,就是檢測二叉聚類樹中各元素間的距離和 pdist計算產生的實際的距離之間有多大的相關性,另外也可以用 inconsistent表示量化某個層次的聚類上的節點間的差異性。

4)最後,用 cluster進行聚類,返回聚類列。

 

 

  轉載二:

Matlab 提供了兩種方法進行聚類分析。

一種是利用 clusterdata 函數對樣本數據進行一次聚類,其缺點爲可供用戶選擇的面較窄,不能更改距離的計算方法;

另一種是分步聚類:(1 )找到數據集合中變量兩兩之間的相似性和非相似性,用pdist 函數計算變量之間的距離;(2 )用 linkage 函數定義變量之間的連接;(3 )用 cophenetic 函數評價聚類信息;(4 )用cluster 函數創建聚類。

1 Matlab 中相關函數介紹

1.1  pdist 函數

調用格式:Y=pdist(X,’metric’)

說明:用 ‘metric’ 指定的方法計算 X 數據矩陣中對象之間的距離。

X :一個m ×n 的矩陣,它是由m 個對象組成的數據集,每個對象的大小爲n

metric’ 取值如下:

‘euclidean’ :歐氏距離(默認);‘seuclidean’ :標準化歐氏距離;

‘mahalanobis’ :馬氏距離;‘cityblock’ :布洛克距離;

‘minkowski’ :明可夫斯基距離;‘cosine’

‘correlation’                 ‘hamming’

‘jaccard’                    ‘chebychev’Chebychev 距離。

1.2  squareform 函數

     調用格式:Z=squareform(Y,..)

     說明:  強制將距離矩陣從上三角形式轉化爲方陣形式,或從方陣形式轉化爲上三角形式。

1.3  linkage 函數

調用格式:Z=linkage(Y,’method’)

    明:用‘method ’參數指定的算法計算系統聚類樹。

   Y pdist 函數返回的距離向量;

   method :可取值如下:

  ‘single’ :最短距離法(默認);  ‘complete’ :最長距離法;

average ’:未加權平均距離法; weighted ’: 加權平均法;

‘centroid’ :質心距離法;      ‘median’ :加權質心距離法;

‘ward’ :內平方距離法(最小方差算法)

返回:Z 爲一個包含聚類樹信息的(m-1 )×3 的矩陣。

1.4  dendrogram 函數

調用格式:[HT…]=dendrogram(Z,p…)

說明:生成只有頂部p 個節點的冰柱圖(譜系圖)。

1.5  cophenet 函數

調用格式:c=cophenetic(Z,Y)

說明:利用pdist 函數生成的Ylinkage 函數生成的Z 計算cophenet 相關係數。

1.6  cluster 函數

調用格式:T=cluster(Z,…)

說明:根據linkage 函數的輸出Z 創建分類。

1.7  clusterdata 函數

調用格式:T=clusterdata(X,…)

說明:根據數據創建分類。

T=clusterdata(X,cutoff) 與下面的一組命令等價:

Y=pdist(X,’euclid’);

Z=linkage(Y,’single’);

T=cluster(Z,cutoff);

2. Matlab 程序

2.1 一次聚類法

X=[11978 12.5 93.5 31908;…;57500 67.6 238.0 15900];

T=clusterdata(X,0.9)

2.2  分步聚類

Step1  尋找變量之間的相似性

pdist 函數計算相似矩陣,有多種方法可以計算距離,進行計算之前最好先將數據用zscore 函數進行標準化。

X2=zscore(X);  % 標準化數據

Y2=pdist(X2);  % 計算距離

Step2    定義變量之間的連接

Z2=linkage(Y2);

Step3  評價聚類信息

   C2=cophenet(Z2,Y2);       //0.94698

Step4 創建聚類,並作出譜系圖

     T=cluster(Z2,6);

     H=dendrogram(Z2);

分類結果:{ 加拿大}{ 中國,美國,澳大利亞}{ 日本,印尼}{ 巴西}{ 前蘇聯}

剩餘的爲一類。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章