Matlab笔记-模糊聚类分析原理及实现

合集下载

在Matlab中如何进行数据聚类分析

在Matlab中如何进行数据聚类分析

在Matlab中如何进行数据聚类分析数据聚类分析是一种常用的数据处理方法,在各个领域都有广泛的应用。

在Matlab中,数据聚类分析相对简单且易于实现。

本文将介绍在Matlab中如何进行数据聚类分析的基本步骤和常用的聚类算法,并通过实例演示其具体操作。

一、数据预处理在进行数据聚类分析之前,通常需要对原始数据进行预处理以保证聚类的准确性。

首先,要对数据进行标准化,使得不同维度的特征具有相同的范围和重要性。

常见的标准化方法有z-score标准化和min-max标准化。

其次,要对数据进行降维处理,以便对高维数据进行分析。

常见的降维方法有主成分分析(PCA)和线性判别分析(LDA)等。

最后,要对数据进行异常值处理,去除可能对聚类结果产生干扰的异常值。

二、选择聚类算法在Matlab中,有多种聚类算法可供选择,如K-means聚类、层次聚类、密度聚类等。

不同的聚类算法适用于不同的数据情况和分析目的。

在选择聚类算法时,应根据数据的特点、分析目的和算法的优缺点进行综合考虑。

下面将以K-means聚类算法为例进行演示。

三、K-means聚类算法实例演示K-means聚类算法是一种简单且常用的聚类算法。

其基本思想是通过迭代计算,将数据样本划分为K个簇,使得同一簇内的样本相似度较高,不同簇之间的相似度较低。

现假设有一组二维数据集,要对其进行聚类分析。

```matlab% 生成随机数据X = [randn(100,2)+ones(100,2); randn(100,2)-ones(100,2)];% K-means聚类K = 2; % 设置簇的个数[idx, C] = kmeans(X, K); % 进行聚类分析% 绘制聚类结果figure;plot(X(idx==1,1),X(idx==1,2),'r.','MarkerSize',12);hold on;plot(X(idx==2,1),X(idx==2,2),'b.','MarkerSize',12);plot(C(:,1),C(:,2),'kx','MarkerSize',15,'LineWidth',3);legend('Cluster 1','Cluster 2','Centroids','Location','NW');title 'Cluster Assignments and Centroids';hold off;```上述代码中,通过`randn`函数生成了一个含有200个样本的二维数据集X,然后利用`kmeans`函数进行聚类计算,得到了每个样本属于的簇的索引`idx`和簇的中心点坐标`C`。

Matlab笔记记录——模糊聚类解析总结计划原理及实现023

Matlab笔记记录——模糊聚类解析总结计划原理及实现023

23.模糊聚类剖析原理及实现聚类剖析,就是用数学方法研究和办理所给定对象,依据事物间的相像性进行区分和分类的过程。

传统的聚类剖析是一种硬区分,它把每个待识其他对象严格地区分到某个类中,拥有非此即彼的性质,这种分类的类型界线是分明的。

跟着模糊理论的成立,人们开始用模糊的方法来办理聚类问题,称为模糊聚类剖析。

因为模糊聚类获得了样本数与各个类其他不确立性程度,表达了样本类属的中介性,即成立起了样本关于类其他不确立性的描绘,能更客观地反应现实世界。

本篇先介绍传统的两种(适合数据量较小情况,及理解模糊聚类原理):鉴于择近原则、模糊等价关系的模糊聚类方法。

(一)预备知识一、模糊等价矩阵定义 1 设 R=(r ij )n×n为模糊矩阵, I 为 n 阶单位矩阵,若R 知足i)自反性: I≤R (等价于 r ii =1);ii)对称性: R T=R;则称 R 为模糊相像矩阵,若再知足niii) 传达性: R2≤R(等价于( r ik r kj ) r ij)k1则称 R 为模糊等价矩阵。

定理 1 设 R 为 n 阶模糊相像矩阵,则存在一个最小的自然数k(k<n), 使得 R k为模糊等价矩阵,且对全部大于k 的自然数 l,恒有R l=R k. R k称为 R 的传达闭包矩阵,记为 t(R).二、模糊矩阵的λ-截矩阵定义 2 设 A=(a ij)n×m为模糊矩阵,对随意的λ∈[0,1], 作矩阵Aa ij( )n m此中,a ij( )1,aij 0,aij称为模糊矩阵 A 的λ-截矩阵。

明显,Aλ为布尔矩阵,且其等价性与与A一致。

意义:将模糊等价矩阵转变为等价的布尔矩阵,能够获得有限论域上的一般等价关系,而等价关系是能够分类的。

所以,当λ在[0,1]上改动时,由 Aλ获得不一样的分类。

若λ1<λ2,则Aλ1≥Aλ2,进而由Aλ2 确立的分类是由Aλ1 确立的分类的加细。

当λ从 1 递减变化到 0 时,Aλ的分类由细变粗,渐渐合并,形成一个分级聚类树。

Matlab中的聚类分析与分类算法实现

Matlab中的聚类分析与分类算法实现

Matlab中的聚类分析与分类算法实现导语:在数据科学和机器学习领域,聚类分析和分类算法是两个重要的主题。

数据的聚类能够将数据集中相似的观测值归为一类,而分类算法则是用于预测未知样本的类别标签。

在Matlab这一强大的数学计算工具中,我们可以利用其丰富的函数库和灵活的编程环境来实现聚类分析和分类算法。

一、聚类分析算法的实现1. K-means聚类算法K-means是最常用的聚类算法之一,它将数据集划分为k个簇,使得同一个簇内的数据点之间的距离最小化,并且不同簇之间的距离最大化。

在Matlab中,我们可以使用kmeans函数来实现K-means聚类算法。

该函数需要输入样本数据矩阵和簇数k,然后返回每个样本点所属的簇标签。

2. 层次聚类算法层次聚类是一种基于距离度量的聚类算法,它将样本逐步合并成越来越大的簇,直到所有样本都被分为一个簇。

在Matlab中,我们可以使用linkage函数来计算样本之间的距离,然后使用cluster函数进行层次聚类。

该函数可以根据指定的距离度量方法(如欧氏距离或曼哈顿距离)和链接方法(如单链接、完全链接或平均链接)对样本进行聚类。

3. DBSCAN聚类算法DBSCAN是一种基于密度的聚类算法,它可以发现任意形状的簇,并且对噪声数据有较高的鲁棒性。

在Matlab中,我们可以使用DBSCAN函数来实现DBSCAN聚类算法。

该函数需要输入样本数据矩阵、密度阈值和邻近距离等参数,然后返回每个样本点所属的簇标签。

二、分类算法的实现1. 决策树分类算法决策树是一种基于判断树结构的分类算法,它通过一系列的决策节点将样本逐步分类到不同的叶节点中。

在Matlab中,我们可以使用fitctree函数来建立决策树分类模型。

该函数需要输入训练数据矩阵和对应的类别标签,然后返回一个可以用于预测的决策树模型。

2. 支持向量机分类算法支持向量机是一种基于间隔最大化的分类算法,它通过在特征空间中找到一个最优超平面来进行分类。

模糊聚类的原理和应用

模糊聚类的原理和应用

模糊聚类的原理和应用1. 简介模糊聚类是一种聚类分析方法,它通过考虑数据点属于不同聚类的程度,使得数据点可以同时属于多个聚类。

与传统的硬聚类方法不同,模糊聚类能够更好地处理实际问题中的复杂性和不确定性。

本文将介绍模糊聚类的原理和应用。

2. 模糊聚类的原理在传统的硬聚类方法中,每个数据点只能隶属于一个聚类,而在模糊聚类中,每个数据点可以属于多个聚类,且属于不同聚类的程度可以从0到1之间的任意值。

这种程度被称为隶属度,用来表示数据点与聚类的关联程度。

模糊聚类的原理可以通过以下步骤来解释:1.初始化聚类中心:首先随机选择一些数据点作为聚类中心。

2.计算隶属度:计算每个数据点与每个聚类中心的隶属度,可以使用模糊C均值(FCM)算法来计算。

3.更新聚类中心:根据隶属度计算出每个聚类的中心点,更新聚类中心。

4.重复步骤2和3,直到聚类中心不再变化或达到预设的迭代次数。

模糊聚类的核心是通过计算隶属度来确定每个数据点对每个聚类的归属程度,从而实现多类别的聚类。

3. 模糊聚类的应用模糊聚类在许多领域中具有广泛的应用,包括数据挖掘、模式识别、图像处理和生物信息学等。

以下是几个常见的应用领域:3.1 数据挖掘在数据挖掘中,模糊聚类可以帮助找到数据集中的隐藏模式和关联规则。

通过将数据点划分到不同的聚类中,可以更好地理解数据的结构和特征。

模糊聚类还可以用作预测分析和聚类分析的基础。

3.2 模式识别在模式识别中,模糊聚类可以帮助将输入数据分类到模式类别中。

通过考虑隶属度,模糊聚类可以更好地处理模糊和不确定性的输入数据。

这在人脸识别、手写体识别等任务中非常有用。

3.3 图像处理在图像处理中,模糊聚类被广泛应用于图像分割和图像压缩等任务。

通过将图像像素划分到不同的聚类中,可以实现图像的分割和压缩。

模糊聚类还可以用于图像特征提取和图像检索等应用。

3.4 生物信息学在生物信息学中,模糊聚类被用于处理基因表达数据和蛋白质序列数据等。

在Matlab中使用模糊C均值聚类进行图像分析的技巧

在Matlab中使用模糊C均值聚类进行图像分析的技巧

在Matlab中使用模糊C均值聚类进行图像分析的技巧在图像分析领域,模糊C均值聚类(FCM)是一种常用的工具,它可以帮助我们发现图像中隐藏的信息和模式。

通过使用Matlab中的模糊逻辑工具箱,我们可以轻松地实现FCM算法,并进行图像分析。

本文将介绍在Matlab中使用FCM进行图像分析的技巧。

首先,让我们简要了解一下FCM算法。

FCM是一种基于聚类的图像分割方法,它将图像的像素分为不同的聚类,每个聚类代表一类像素。

与传统的C均值聚类算法不同,FCM允许像素属于多个聚类,因此能够更好地处理图像中的模糊边界。

在Matlab中使用FCM进行图像分析的第一步是加载图像。

可以使用imread函数将图像加载到Matlab的工作区中。

例如,我们可以加载一张名为“image.jpg”的图像:```matlabimage = imread('image.jpg');```加载图像后,可以使用imshow函数显示图像。

这可以帮助我们对图像有一个直观的了解:```matlabimshow(image);```接下来,我们需要将图像转换为灰度图像。

这是因为FCM算法通常用于灰度图像分析。

可以使用rgb2gray函数将彩色图像转换为灰度图像:```matlabgrayImage = rgb2gray(image);```在使用FCM算法之前,我们需要对图像进行预处理。

预处理的目的是消除图像中的噪声和不必要的细节,从而更好地提取图像中的特征。

常用的图像预处理方法包括平滑、锐化和边缘检测等。

Matlab中提供了许多图像预处理函数。

例如,可以使用imnoise函数向图像中添加高斯噪声:```matlabnoisyImage = imnoise(grayImage, 'gaussian', 0, 0.01);```还可以使用imfilter函数对图像进行平滑处理。

常见的平滑方法包括均值滤波和高斯滤波:```matlabsmoothImage = imfilter(noisyImage, fspecial('average', 3));```一旦完成预处理步骤,我们就可以使用模糊逻辑工具箱中的fcm函数执行FCM算法。

模糊聚类算法的原理和实现方法

模糊聚类算法的原理和实现方法

模糊聚类算法的原理和实现方法模糊聚类算法是一种数据分类和聚类方法,它在实际问题中有着广泛的应用。

本文将介绍模糊聚类算法的原理和实现方法,包括模糊C均值(FCM)算法和模糊神经网络(FNN)算法。

一、模糊聚类算法的原理模糊聚类算法是基于模糊理论的一种聚类方法,它的原理是通过对数据进行模糊分割,将每个数据点对应到多个聚类中心上,从而得到每个数据点属于各个聚类的置信度。

模糊聚类算法的原理可以用数学公式进行描述。

设有n个数据样本点X={x1, x2, ..., xn},以及m个聚类中心V={v1, v2, ..., vm}。

对于每个数据样本点xi,令uij为其属于第j个聚类中心的置信度,其中j=1,2,..., m,满足0≤uij≤1,且∑uij=1。

根据模糊理论,uij的取值表示了xi属于第j个聚类中心的隶属度。

为了达到聚类的目的,我们需要对聚类中心进行调整,使得目标函数最小化。

目标函数的定义如下:J = ∑∑(uij)^m * d(xi,vj)^2其中,m为模糊度参数,d(xi,vj)为数据点xi与聚类中心vj之间的距离,常用的距离度量方法有欧氏距离和曼哈顿距离。

通过不断调整聚类中心的位置,最小化目标函数J,即可得到模糊聚类的结果。

二、模糊C均值(FCM)算法的实现方法模糊C均值算法是模糊聚类算法中最经典的一种方法。

其具体实现过程如下:1. 初始化聚类中心:随机选取m个数据点作为初始聚类中心。

2. 计算隶属度矩阵:根据当前聚类中心,计算每个数据点属于各个聚类中心的隶属度。

3. 更新聚类中心:根据隶属度矩阵,更新聚类中心的位置。

4. 判断是否收敛:判断聚类中心的变化是否小于设定的阈值,如果是则停止迭代,否则返回第2步。

5. 输出聚类结果:将每个数据点分配到最终确定的聚类中心,得到最终的聚类结果。

三、模糊神经网络(FNN)算法的实现方法模糊神经网络算法是一种基于模糊理论和神经网络的聚类方法。

其实现过程和传统的神经网络类似,主要包括以下几个步骤:1. 网络结构设计:确定模糊神经网络的层数和每层神经元的个数。

使用Matlab进行模糊聚类分析

使用Matlab进行模糊聚类分析

使用Matlab进行模糊聚类分析概述模糊聚类是一种非常有用的数据分析方法,它可以帮助我们在数据集中找到隐藏的模式和结构。

在本文中,我们将介绍如何使用Matlab进行模糊聚类分析,以及该方法的一些应用和局限性。

引言聚类分析是一种数据挖掘技术,其目的是将数据集中相似的数据点划分为不同的群组或簇。

而模糊聚类则是一种非常强大的聚类方法,它允许数据点属于不同的群组,以及具有不同的隶属度。

因此,模糊聚类可以更好地处理一些模糊性或不确定性的情况。

Matlab中的模糊聚类分析工具Matlab是一种功能强大的数值计算和数据分析软件,它提供了一些内置的模糊聚类分析工具,可以帮助我们进行模糊聚类分析。

其中最常用的是fcm函数(fuzzy c-means clustering)。

fcm函数是基于fuzzy c-means算法的,它使用隶属度矩阵来度量数据点与不同类之间的相似性。

该函数需要指定聚类的数量和迭代次数,然后根据数据点与聚类中心之间的距离来计算隶属度矩阵,并不断迭代更新聚类中心和隶属度矩阵,直到收敛为止。

例如,假设我们有一个包含N个数据点的数据集X,每个数据点包含M个特征。

我们可以使用fcm函数对该数据集进行模糊聚类分析,首先将数据集归一化,并指定聚类的数量(如3个聚类),迭代次数(如100次),并设置模糊指数(如2)。

然后,我们可以使用聚类中心来获得每个数据点的隶属度,并根据隶属度矩阵来进行进一步的数据分析或可视化。

应用实例模糊聚类分析在实际中有很多应用,下面我们将介绍其中两个常见的应用实例。

1. 图像分割图像分割是一种将图像的像素点划分为不同区域或对象的过程。

模糊聚类分析可以在图像分割中发挥重要作用,因为它可以通过考虑像素点与不同区域之间的隶属度来更好地处理图像的模糊性和纹理。

通过使用Matlab中的模糊聚类分析工具,我们可以将一张图像分割为不同的区域,并进一步进行对象识别或图像处理。

2. 数据分类在数据挖掘和机器学习中,数据分类是一个非常重要的任务,其目的是将数据点划分到不同的类别中。

基于MatLab的文本模糊聚类分析及应用

基于MatLab的文本模糊聚类分析及应用

于模糊聚类的文本聚类 。 目前 , 国内外学者 己经把模糊 聚类分析用 于文本模糊聚类 的研究 。该文也通过 尝试性 的实验研究来探索
文 本 模 糊 聚类 。
1知识 准备
在实际进行实验之前我们有必要清楚进行文本模糊 聚类 的关键步骤 , 以及聚类 所采用 的编程工具。
11文本模糊聚类的关键步骤 .
C mp tr n we g n e h oo y电脑 知 识 与技术 o ue o ld e dT c n l K a g
Vo . ,No2 ,S p e 1 8 .5 e t mb r 2 2 e 01 .
基于 Ma L b的文 本模 糊 聚 类分 析及 应 用 ta
常 艳王 芬 李 ,雪
( 南京大学金陵学院 信息科学与工程学 院, 江苏 南京 2 0 8 ) 10 9
摘要: 典型的 文本 聚类无 法解决文本 的不确 定类别属性 的 1题 , 以有必要将模 糊聚类分析 引入文本 聚类。 文章 采用 9 所 tbY具对从 中国知 网中获取 的 2 篇文献进行文本模糊 聚类 , l . a - O 以期通过 尝试 性的 实验研 究来探 索文本模糊聚 类, 了解
( p. fnoma o c n e n n ier gJnn ol eo Naj g iesy Naj g 10 9 C ia Deto Ifr t nSi c d g e n ,il gC lg f ni v rt, ni 0 8 , hn ) i e a E n i i e n Un i n2
文本模糊聚类分析过程主要包含 以下几个方面 : 文本特征建 立与抽取 、 标定 、 聚类。
11 .. 本 特 征建 立与 抽 取 1文
文本信 息源的非结构化特性使得现有 的数据 发现技术 无法 直接应用于其上 。因此 , 我们 必须对文本进行预处理 , 取代 表其 抽
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

23. 模糊聚类分析原理及实现聚类分析,就是用数学方法研究和处理所给定对象,按照事物间的相似性进行区分和分类的过程。

传统的聚类分析是一种硬划分,它把每个待识别的对象严格地划分到某个类中,具有非此即彼的性质,这种分类的类别界限是分明的。

随着模糊理论的建立,人们开始用模糊的方法来处理聚类问题,称为模糊聚类分析。

由于模糊聚类得到了样本数与各个类别的不确定性程度,表达了样本类属的中介性,即建立起了样本对于类别的不确定性的描述,能更客观地反映现实世界。

本篇先介绍传统的两种(适合数据量较小情形,及理解模糊聚类原理):基于择近原则、模糊等价关系的模糊聚类方法。

(一)预备知识一、模糊等价矩阵定义1设R=(r ij )n ×n 为模糊矩阵,I 为n 阶单位矩阵,若R 满足 i) 自反性:I ≤R (等价于r ii =1); ii) 对称性:R T =R;则称R 为模糊相似矩阵,若再满足iii) 传递性:R 2≤R (等价于1()nik kj ij k r r r =∨∧≤)则称R 为模糊等价矩阵。

定理1设R 为n 阶模糊相似矩阵,则存在一个最小的自然数k (k <n ), 使得R k 为模糊等价矩阵,且对一切大于k 的自然数l ,恒有R l =R k . R k 称为R 的传递闭包矩阵,记为t(R). 二、模糊矩阵的λ-截矩阵定义2设A =(a ij )n ×m 为模糊矩阵,对任意的λ∈[0,1], 作矩阵()()ij n mA a λλ⨯=其中,()1, 0, ij ijij a aa λλλ≥⎧=⎨<⎩称为模糊矩阵A 的λ-截矩阵。

显然,A λ为布尔矩阵,且其等价性与与A 一致。

意义:将模糊等价矩阵转化为等价的布尔矩阵,可以得到有限论域上的普通等价关系,而等价关系是可以分类的。

因此,当λ在[0,1]上变动时,由A λ得到不同的分类。

若λ1<λ2, 则A λ1≥A λ2, 从而由A λ2确定的分类是由A λ1确定的分类的加细。

当λ从1递减变化到0时,A λ的分类由细变粗,逐渐归并,形成一个分级聚类树。

例1设U={u 1, u 2, u 3, u 4, u 5}, 对给定的U 上的模糊等价关系让λ从1到0变化,观察分类过程。

(1) 当λ=1时,110000 01000 00100 00010 00001R⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦分类结果为5类:(每行代表一类,1代表对应元素在该类){u1}, {u2}, {u3}, {u4}, {u5}(2) 当λ=0.8时,0.810100 01000 10100 00010 00001R⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦分类结果为4类:{u1, u3}, {u2}, {u4}, {u5} (3) 当λ=0.6时,0.610100 01000 10100 00011 00011R⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦分类结果为3类:{u1, u3}, {u2}, {u4, u5} (4) 当λ=0.5时,0.510111 01000 10111 10111 10111R⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦分类结果为2类:{u 1, u 3, u 4, u 5}, {u 2} (4) 当λ=0.4(R 中的最小值)时,0.41111111111111111111111111R ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦分类结果为1类:{u 1, u 2, u 3, u 4, u 5}整个动态分类过程如下:(二)基于择近原则的模糊聚类择近原则就是利用贴近度来实现分类操作,贴近度用来衡量两个模糊集A 和B 的接近程度,用N (A ,B )表示。

贴近度越大,表明二者越接近。

设论域有限或者在一定区间,即U={u 1, u 2, …, u n }或U=[a,b], 常用的贴近度有以下三种: (1) 海明贴近度11(,)1|()()|ni i i N A B A u B u n ==--∑1(,)1|()()|d bi i aN A B A u B u ub a =---⎰(2) 欧氏贴近度1221(,)1[()()]ni iiN A B A u B u=⎫=--⎪⎭∑)122(,)1[()()]dbi iaN A B A u B u u=--⎰(3) 格贴近度(,)()()c cN A B A B A B=∧其中,()1()()ni iiA B A u B u==∨∧.Matlab实现:格贴近度的实现函数fuz_closing.mfunction y=fuz_closing(A,B,type)%要求A与B列数相同的行向量[m,n]=size(A);switch typecase 1 %海明贴近度y=1-sum(abs(A-B))/n;case 2 %欧氏贴近度y=1-(sum(A-B).^2)^(1/2)/sqrt(n);case 3 %格贴近度y1=max(min(ones(m,n)-A,ones(m,n)-B));%ones(m,n)-A等于A^cy2=max(min(A,B));y=min(y1,y2);end例2设某产品的质量等级分为5级,其中一级有5种评判因素u1, u2, u3, u4, u5. 每一等级的模糊集为B1={0.5 0.5 0.6 0.4 0.3}B2={0.3 0.3 0.4 0.2 0.2}B3={0.2 0.2 0.3 0.1 0.1}B4={0.1 0.1 0.2 0.1 0}B5={0.1 0.1 0.1 0.1 0}假设某产品各评判因素的值为A={0.4 0.3 0.2 0.1 0.2}, 问该产品属于哪个等级?代码:A=[0.4 0.3 0.2 0.1 0.2];B=[0.5 0.5 0.6 0.4 0.3;0.3 0.3 0.4 0.2 0.2;0.2 0.2 0.3 0.1 0.1;0.1 0.1 0.2 0.1 0;0.1 0.1 0.1 0.1 0];for i=1:5haiming(i)=fuz_closing(A,B(i,:),1);oushi(i)=fuz_closing(A,B(i,:),2);ge(i)=fuz_closing(A,B(i,:),3);endhaimingoushige运行结果:haiming = 0.7800 0.9200 0.9000 0.8600 0.8400 oushi = 0.5081 0.9106 0.8658 0.6870 0.6422ge = 0.4000 0.3000 0.2000 0.2000 0.1000可见样本A与各等级的格贴近度分别为0.4, 0.3, 0.2, 0.2, 0.1, 故可认为该产品属于B1等级。

若按令两种贴近度判断,该产品属于B2等级。

(三)基于模糊等价关系的模糊聚类一、算法步骤1. 样本数据归一化设X={x 1, x 2, …, x n }为要分类的n 个样本,每个样本有m 个指标,即x i ={ x i 1, x i 2, …, x im }, i =1,2,..,n得到原始数据矩阵X=(x ij )n ×m .由于不同指标的数据量纲不同,为了使数据能够比较,要先对X 做归一化处理。

2. 建立模糊相似矩阵R先建立样本x i 与x j 相似程度r ij , 进而构造模糊相似矩阵R=(r ij )n×n建立r ij 常用的方法有: (1) 相似系数法①夹角余弦法:mikjkij xx r ⋅=∑②相关系数法:||||miki jk j ij xx x x r -⋅-=∑(2)距离法一般取r ij =1-c (d (x i ,x j ))α, 其中c 和α为适当选取的参数,使得0≤r ij ≤1. 常用的距离有:①海明距离:1(,)||mi j ik jk k d x x x x ==-∑②欧氏距离:(,)i j d x x =③切比雪夫距离:1(,)max ||i j ik jk k md x x x x ≤≤=- (3) 贴近度法①最大最小法:11()()mikjk k ij mikjk k x x r xx ==∧=∨∑∑②算术平均最小法:11()1()2mikjk k ij m ik jk k xx r x x ==∧=+∑∑③几何平均最小法:11()mikjk k ij mk xx r ==∧=∑3. 求出R 的传递闭包t(R)即改造相似关系为等价关系:令2R R R =, 再令422R R R =, …, 直到满足2l l l R R R =与R l 相等,即为t(R), 仍记为R.4. 选取合适的λ, 利用λ-截矩阵R λ进行分类(参考例1)。

二、Matlab 实现求模糊相似矩阵R 的函数:fuz_distance.mfunction R=fuz_distance(x,type)%x 为归一化的数据矩阵, type 选择计算相似程度的方法 %返回模糊相似矩阵R [n,m]=size(x);%距离法的选择参数c 和a, 需要根据具体情况修改以保证R(i,j)属于[0,1]c=0.1; a=1; for i=1:nfor j=1:nswitch typecase 1 %夹角余弦法R(i,j)=(x(i,:)*x(j,:)')/(norm(x(i,:),2)*norm(x(j,:),2));case 2 %相关系数法Dxi=abs(x(i,:)-mean(x(i,:)));Dxj=abs(x(j,:)-mean(x(j,:)));R(i,j)=(Dxi*Dxj')/(norm(Dxi,2)*norm(Dxj,2));case 3 %海明距离法d=sum(abs(x(i,:)-x(j,:)));R(i,j)=1-c*d^a;case 4 %欧氏距离法d=norm(x(i,:)-x(j,:),2);R(i,j)=1-c*d^a;case 5 %切比雪夫距离法d=max(abs(x(i,:)-x(j,:)));R(i,j)=1-c*d^a;case 6 最大最小(贴近度)法R(i,j)=sum(min([x(i,:);x(j,:)]))/sum(max([x(i,:);x(j,:)]));case 7 算术平均最小(贴近度)法R(i,j)=2*sum(min([x(i,:);x(j,:)]))/sum(x(i,:)+x(j,:));case 8 %几何平均最小(贴近度)法R(i,j)=sum(min([x(i,:);x(j,:)]))/sum(sqrt(x(i,:).*x(j,:)));endendend求R的传递闭包t(R)的函数:tran_R.mfunction [B,k]=tran_R(R)%R为模糊相似矩阵, 循环构造满足传递性的t(R)%k为满足R^2k = R^k的最小的自然数kn=length(R);B=zeros(n,n);flag=0;k=1/2;while flag==0B=fco(R,R); %做模糊合成运算k=2*k;if B==Rflag=1;elseR=B; %循环计算R传递闭包endend上面的函数tran_R.m调用函数矩阵模糊合成算子函数:fco.mfunction B=fco(Q,R)%实现模糊合成算子的计算, 要求Q的列数等于R的行数[n,m]=size(Q);[m,l]=size(R);B=zeros(n,l);for i=1:nfor k=1:lB(i,k)=max(min([Q(i,:);R(:,k)']));endend求t(R)的λ-截矩阵的函数:fuz_lamda.mfunction y=fuz_lamda(X,m)%用λ-截矩阵将样本分成m类, m≤总样本数lamda=unique(X)'; %根据R中的值取λ值%unique函数取矩阵不重复元素组成向量并从小到大排好序X(find(X<lamda(m)))=0;X(find(X>=lamda(m)))=1;y=X;例3某地区设有11个雨量站,其分布如图所示:10年来各雨量站测得的年降雨量表如下:现因经费问题,希望撤销几个雨量站,问撤销哪些雨量站而不会太多地减少降雨信息?分析:对11个雨量站进行模糊聚类,同一类的只需保留一个即可。

相关文档
最新文档