`
xitongyunwei
  • 浏览: 926354 次
文章分类
社区版块
存档分类
最新评论

基于模糊等价关系的模糊聚类程序实现

 
阅读更多

Ø 总体概述

模糊数学已经使用到各个领域,其在图像的分割中也是常用的经典方法,而且实时在其基础上能有些创新。本文通过两天来对模糊数学基础知识学习进行个小的poject巩固。本文标题兼主要内容为基于模糊等价关系的模糊聚类程序实现

为什么要把模糊聚类分析基于模糊等价关系之上呢?模糊等价关系是同时满足自反性、对称性和传递性的模糊关系,因此必定有如下特性:

1)自反性:保证关系中元素和元素本身是同一类

2)对称性:保证元素AB同类,则BA也同类

3)传递性:若AB同类,BC同类,则AC同类

一般的聚类分析流程图如下

%作者:夏侯佐鑫

%日期: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

5

5

3

2

B

2

3

4

5

C

5

5

2

3

D

1

5

3

1

E

2

4

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;

for i = 1:m

for j = 1:m

for k = 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;

for i=1:m

for j=1:m

temp(i,j) = 0;

for k=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;

if y == temp

flag = 1;%传递闭包已找到

end

end

(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 -聚类截距

if r>1 | r<0

error('第二个参数必须小于1');

end

len = length(array);

for i=1:len

for j=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时,最终分类结果为{A,C},{D,E},{B,C}三组。选择不同的r值得到不同的分类结果。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics