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

本文详细介绍了基于模糊等价关系的模糊聚类算法的实现过程,包括获取原始矩阵、计算相似矩阵、计算模糊等价矩阵及截值聚类分析。通过实例演示了如何使用Matlab编程实现该算法,并最终通过输出结果展示了分类结果。

Ø 总体概述

模糊数学已经使用到各个领域,其在图像的分割中也是常用的经典方法,而且实时在其基础上能有些创新。本文通过两天来对模糊数学基础知识学习进行个小的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

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值得到不同的分类结果。

### 基于模糊等价关系的聚类算法详解 在机器学习领域,基于模糊等价关系的聚类算法是一种重要的方法,用于处理数据中的不确定性。模糊等价关系是模糊数学的一个重要概念,它通过定义模糊集合之间的相似性来描述对象之间的关系[^4]。 #### 模糊关系的定义 模糊关系是一种扩展的经典二元关系,其中元素之间的关系值不再局限于0或1,而是可以取[0, 1]区间内的任意值。设 \( X \) 和 \( Y \) 是两个非空集合,\( R \subseteq X \times Y \) 是一个模糊关系,则 \( R \) 可以表示为一个模糊矩阵 \( R = (r_{ij})_{m \times n} \),其中 \( r_{ij} \in [0, 1] \) 表示元素 \( x_i \in X \) 和 \( y_j \in Y \) 之间的隶属度[^4]。 #### 模糊等价关系的性质 模糊等价关系是一种特殊的模糊关系,满足以下三个性质: 1. **自反性**:对于所有 \( x \in X \),有 \( R(x, x) = 1 \)。 2. **对称性**:对于所有 \( x, y \in X \),有 \( R(x, y) = R(y, x) \)。 3. **传递性**:对于所有 \( x, y, z \in X \),如果 \( R(x, y) \geq \lambda \) 且 \( R(y, z) \geq \lambda \),则 \( R(x, z) \geq \lambda \)[^4]。 #### 基于模糊等价关系的聚类算法 基于模糊等价关系的聚类算法通常包括以下步骤: 1. **构建模糊相似矩阵**:根据数据集中的样本点,计算两两样本之间的相似度,形成一个模糊相似矩阵 \( R \)。 2. **生成模糊等价矩阵**:通过对模糊相似矩阵进行幂运算或闭包操作,使其满足模糊等价关系的性质。 3. **划分聚类结果**:根据模糊等价矩阵的阈值切割,确定最终的聚类结果。 例如,在模糊C均值(FCM)算法中,模糊隶属度矩阵 \( U = (u_{ij})_{n \times c} \) 的每个元素 \( u_{ij} \) 表示样本 \( x_i \) 属于聚类中心 \( v_j \) 的隶属度,满足 \( 0 \leq u_{ij} \leq 1 \) 且 \( \sum_{j=1}^c u_{ij} = 1 \)[^4]。 #### 模糊关系的应用 模糊关系广泛应用于多个领域,包括但不限于: - **图像处理**:通过模糊关系定义像素之间的相似性,用于图像分割和特征提取。 - **模式识别**:利用模糊关系描述样本之间的相似性,提高分类模型的鲁棒性。 - **数据挖掘**:结合模糊关系与聚类算法,发现数据中的隐藏模式。 - **决策支持系统**:通过模糊关系建模不确定性,辅助复杂决策过程。 ```python # 示例代码:基于模糊等价关系的简单聚类 import numpy as np def fuzzy_equivalence_matrix(similarity_matrix): # 幂运算生成模糊等价矩阵 equivalence_matrix = similarity_matrix.copy() for _ in range(10): # 迭代次数 equivalence_matrix = np.dot(equivalence_matrix, equivalence_matrix) equivalence_matrix[equivalence_matrix > 1] = 1 return equivalence_matrix # 示例模糊相似矩阵 similarity_matrix = np.array([[1, 0.5, 0.3], [0.5, 1, 0.7], [0.3, 0.7, 1]]) # 计算模糊等价矩阵 equivalence_matrix = fuzzy_equivalence_matrix(similarity_matrix) print("模糊等价矩阵:\n", equivalence_matrix) ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值