1. 程式人生 > >譜聚類方法-MATLAB

譜聚類方法-MATLAB

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函式

呼叫格式:[H,T,…]=dendrogram(Z,p,…)

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

1.5  cophenet函式

呼叫格式:c=cophenetic(Z,Y)

說明:利用pdist函式生成的Y和linkage函式生成的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.015900];

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);

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

剩餘的為一類。

相關推薦

方法-MATLAB

Matlab提供了兩種方法進行聚類分析。 一種是利用 clusterdata函式對樣本資料進行一次聚類,其缺點為可供使用者選擇的面較窄,不能更改距離的計算方法; 另一種是分步聚類:(1)找到資料集合中變數兩兩之間的相似性和非相似性,用pdist函式計算變數之間的距離;(2)

演算法Matlab快速實現

%Ncut譜聚類完整函式定義(儲存為.m檔案): function C = SpectralClustering(data,k,a)     %data是資料點矩陣  K是聚類個數  a代表高斯核函式的引數 %UNTITLED Summary of this functio

演算法 matlab

1、譜聚類演算法步驟公式 (1)整理資料集,使資料集中資料在0-1之間。假設資料集m行n列。 (2)求鄰接矩陣W。元素值為每一點到其他點之間距離,即權重。 (3)求相似度矩陣S,相似度矩陣的定義。相似度矩陣由權值矩陣得到,實踐中一般用高斯核函式(也稱徑向基

基於的影象分割方法簡介

影象分割演算法有幾種:                 基於區域劃分方法。                 基於邊界劃分方法。常用的是邊緣檢測方法,優點是準確定位邊緣、運算速度快;缺點是不能保證邊緣的連續性和封閉性。                 基於閾值劃分方法。  

方法:DBSCAN演算法研究(2)--matlab程式碼實現

DBSCAN聚類演算法三部分: 1、        DBSCAN原理、流程、引數設定、優缺點以及演算法; 2、        matlab程式碼實現; 3、        C++程式碼實現及與matlab例項結果比較。 摘要:介紹DBSCAN原理、流程、引數設

Ng演算法的Matlab簡單實現

請編寫一個譜聚類演算法,實現“Normalized Spectral Clustering—Algorithm 3 (Ng 演算法)” 結果如下 譜聚類演算法核心步驟都是相同的: •利用點對之間的相似性,構建親和度矩陣; •構建拉普拉斯矩陣; •求解拉普拉斯矩陣最小的

matlab演算法實現及詳解

    此時此景,我想先講個故事。我哈哈哈。    譜聚類(spectral clustering)的思想最早可以追溯到一個古老的希臘傳說,話說當時有一個公主,由於其父王去世後,長兄上位,想獨攬大權,便殺害了她的丈夫,而為逃命,公主來到了一個部落,想與當地的酋長買一塊地,於是

python實現一個層次方法

mac ima 優先隊列 () don 標簽 中位數 filepath normal 層次聚類(Hierarchical Clustering) 一.概念   層次聚類不需要指定聚類的數目,首先它是將數據中的每個實例看作一個類,然後將最相似的兩個類合並,該過程叠代計算只到剩

分析之

空間聚類 family 數據集 .cn 存在 聚類算法 array 全局最優 傳統 聚類根據給定的樣本數據集定義一個描述成對數據點相似度的親合矩陣,並且計算矩陣的特征值和特征向量 , 然後選擇合適 的特征向量聚類不同的數據點。 譜聚類可以在任意形狀的樣本空間聚類,且

python實踐

xlabel 部分 sample view from res fit float enume 聚類後: # -*- coding: utf-8 -*-"""Created on 09 05 2017@author: similarface"""imp

利用算法解決非完全圖的

out img 通過 ctr 技術 href 是我 sta 選擇   在處理非完全圖的聚類時候,很難找到一個有效的聚類算法去做聚類。   對於下圖來說,10號點和15號點的位置相隔並不是那麽近,如用普通聚類算法對下圖做聚類,通常會把10號點和15號點聚在一個類上,所以一般的

代碼驗證ncut和的系數

mark div dia source nes pos cnblogs 驗證 rand W = rand(30); W = W+W'; I = cell(3,1); I{1} = 1:10; I{2} = 11:20; I{3} = 21:30; vol

轉:完整的最簡單的python代碼

得到 for details -c 簡單的 enum off ads odin http://blog.csdn.net/waleking/article/details/7584084 針對karate_club數據集,做了譜聚類。由於是2-way clusterin

轉:

推導 end 常用 nal poi 但是 blog 正是 四個步驟 http://www.cnblogs.com/fengyan/archive/2012/06/21/2553999.html 譜聚類 給你博客園上若幹個博客,讓你將它們分成K類,你會怎樣做

算法總結】

logs 缺點 文字檢測 什麽 spa 公司 聚類 16px 總結 前言:以前只是調用過譜聚類算法,我也不懂為什麽各家公司都問我一做文字檢測的這個算法具體咋整的,沒整明白還給我掛了哇擦嘞?訊飛和百度都以這個理由刷本寶,今天一怒把它給整吧清楚了,下次誰再問來!說不暈你算我輸!

分析(三) 層次matlab程式

一、層次聚類介紹 1.1 簡介 層次聚類,主要是對給定的待聚類的資料集進行層次化分解。主要分為兩大類: 1.從下到上的凝聚聚類 2.從上到下的分裂聚類 其他演算法大部分是對樣本之間距離度量或者類間凝聚/分裂依據進行改進。 1.2從下到上的凝聚演算法 從下到上的凝聚演算法能夠讓人們較為直觀的觀

演算法設計:基於密度的方法

1、前言 我們生活在資料大爆炸時代,每時每刻都在產生海量的資料如視訊,文字,影象和部落格等。由於資料的型別和大小已經超出了人們傳統手工處理的能力範圍,聚類,作為一種最常見的無監督學習技術,可以幫助人們給資料自動打標籤,已經獲得了廣泛應用。聚類的目的就是把不同的資料點按照它們的相似與相異度分割成不

(spectral clustering)

1. 譜聚類概述 譜聚類是從圖論中演化出來的演算法,後來在聚類中得到了廣泛的應用。它的主要思想是把所有的資料看做空間中的點,這些點之間可以用邊連線起來。距離較遠的兩個點之間的邊權重值較低,而距離較近的兩個點之間的邊權重值較高,通過對所有資料點組成的圖進行切圖,讓切圖後不同的子圖間邊權重和

通俗易懂描述

複習:實對稱陣的特徵值是實數因此實對稱陣不同特徵值的特徵向量一定是正交的,這個正交是實數範圍內的正交。 首先我們來看什麼叫譜這個字是什麼意思,比如說我們唱歌的時候有一個歌譜,那個歌譜就來確定了我們這首歌它唱的旋律是什麼樣子,我們唱的這個歌是不是在譜上,有沒有跑調對吧。 而這個我們想定義一個矩

演算法入門教程(三)—— 求f^TLf的最小值

在上一篇部落格中,我們知道目標函式變為 argmin⁡f∈R6fTLfarg \min \limits_{f \in \R^6} f^TLfargf∈R6min​fTLf,即找到一個fff,使得 fTLff^TLffTLf 取得最小值 這篇部落格將通過求導的方