基於模糊等價關係的模糊聚類程式實現

2021-08-27 02:13:31 字數 3775 閱讀 7470

ø 總體概述

模糊數學已經使用到各個領域,其在影象的分割中也是常用的經典方法,而且實時在其基礎上能有些創新。本文通過兩天來對模糊數學基礎知識學習進行個小的poject鞏固。本文標題兼主要內容為基於模糊等價關係的模糊聚類程式實現

為什麼要把模糊聚類分析基於模糊等價關係之上呢?模糊等價關係是同時滿足自反性、對稱性和傳遞性的模糊關係,因此必定有如下特性:

(1)自反性:保證關係中元素和元素本身是同一類

(2)對稱性:保證元素a與b同類,則b與a也同類

(3)傳遞性:若a與b同類,b與c同類,則a與c同類

一般的聚類分析流程圖如下

%日期:2012-07-15 %

功能:模糊聚類分析

clc

% 1)

原始矩陣

disp(

'1)原始矩陣')

a = [5 5 3 2;

2 3 4 5;

5 5 2 3;

1 5 3 1;

2 4 5 1]

% 2)

計算相似矩陣m

disp(

'2)計算相似矩陣m')

m = abs_sub(a, 5, 4)

% 3)

計算模糊等價矩陣

disp(

'3)計算模糊等價矩陣')

n = matrix_com(m, 5)

% 4)

λ聚類分析

r = 0.4;

sprintf(

'4)λ聚類分析(λ=%0.1f)', r)

q = cluster(n, r)

ø 下面分步驟實現每個過程中的呼叫函式

(1)獲取原始矩陣 地方

空氣 水

土壤 植被

a 55 3

2 b2 3

4 5c 5

5 23 d

1 53 1

e 24 5

1由上表很容易一一對應獲得矩陣

a = [5 5 3 2;

2 3 4 5;

5 5 2 3;

1 5 3 1;

2 4 5 1]

矩陣的行代表物件,矩陣的列代表物件具有的性質。

(2)計算相似矩陣

方法很多,這裡使用很簡單的絕對值減法,其數學公式如下

代表相似矩陣中的第i行第j列元素,

代表a矩陣的第i行第j列元素。 %

%日期:2012-07-15 %

功能:絕對值減數法計算相對矩陣

function

y = abs_sub(array, m, n);

% array - input array original array

% m - number of objects

% n - number of properties

c = 0.1;

temp = 0;

fori = 1:m

forj = 1:m

fork = 1:n

temp = temp + abs(array(i,k)-array(j,k));

end

y(i,j) = 1 - c*temp;

temp = 0;

end

end

(3)計算模糊等價矩陣

這裡利用離散數學裡面的關係的合成運算方法,通過迭代計算等價矩陣。 %

%日期:2012-07-15 %

功能:模糊矩陣合成計算傳遞閉包

function

y = matrix_com(array, m);

% array - input array original array

% m - number of objects

% n - number of properties

flag = 0;

%是否找到傳遞閉包的標誌

temp = 0;

cnt = 0;

while

~flag

y = temp;

fori=1:m

forj=1:m

temp(i,j) = 0;

fork=1:m if

cnt==0

temp(i,j)=max(temp(i,j),min(array(i,k), array(k,j)));

else

temp(i,j)=max(temp(i,j),min(y(i,k), y(k,j)));

end

end

end

end

cnt = cnt + 1;

ify == temp

flag = 1;%

傳遞閉包已找到

endend

(4)截值聚類分析

很簡單,比如有矩陣

a = [5 5 3 2;

2 3 4 5;

5 5 2 3;

1 5 3 1;

2 4 5 1]

使用截值r=3,則將a矩陣中比3小的值置0,大於等於3的值置1。結果為

a = [1 1 1 0;

0 1 1 1;

1 1 0 1;

0 1 1 0;

0 1 1 0]

使用簡單的matlab程式實現如下 %

%日期:2012-07-15 %

功能:λ聚類分析

function

y = cluster(array, r);

% array -

模糊相似矩陣或模糊等價矩陣

% r -

聚類截距

ifr>1 | r<0

error('

第二個引數必須小於1');

end

len = length(array);

fori=1:len

forj=1:len if

array(i,j)>=r

y(i,j) = 1;

else

y(i,j) = 0;

end

end

end ø

最後通過matlab輸出結果進一步認識整個模糊聚類的過程

1)原始矩陣

a =5 5 3 2

2 3 4 5

5 5 2 3

1 5 3 1

2 4 5 1

2)計算相似矩陣m

m =1 1/10 4/5 1/2 3/10

1/10 1 1/10 1/5 2/5

4/5 1/10 1 3/10 1/10

1/2 1/5 3/10 1 3/5

3/10 2/5 1/10 3/5 1

3)計算模糊等價矩陣

n =1 2/5 4/5 1/2 1/2

2/5 1 2/5 2/5 2/5

4/5 2/5 1 1/2 1/2

1/2 2/5 1/2 1 3/5

1/2 2/5 1/2 3/5 1

4)λ聚類分析(λ=0.6)

q =1 0 1 0 0

0 1 0 0 0

1 0 1 0 0

0 0 0 1 1

0 0 0 1 1

所以,當r=0.6時,最終分類結果為,,三組。選擇不同的r值得到不同的分類結果。

等價關係的個數

等價關係 設r為集合a上的關係,如果r是自反的,對稱的,傳遞的,則稱r為a上的等價關係.等價類 設r是集合a上的等價關係,對任意的a in a,令 a r 則稱 a r為元素a關於r的等價類,簡稱為a的等價類,簡記為 a 即 x in a r leftrightarrow in r 所有等價類的集合...

基於webgl的高斯模糊

模糊有很多種,這裡說高斯模糊,高斯模糊會給人一種毛玻璃的感覺.以上三圖分別為原圖,高斯半徑為1.5,高斯半徑4.5 高斯模糊怎麼模糊呢?主要取決於乙個函式 高斯函式,或者正態分佈 對於乙個點,要對他進行模糊,就要選取周圍的點的顏色值,然後將周圍的點按權值相加,就得到了模糊後的點的顏色,而這個權值,就...

基於OpenLayers 的WFS模糊查詢優化

思路 先通過指定乙個featurename欄位,在全表查詢時,返回的資料就會比較小,這樣會提高一些速度。返回資料中,我們取出featureid的值,再通過url進行gml格式的解析,從而得到查詢後返回的全欄位gml資訊。實現 var filter new openlayers.filter.logi...