Matlab学习系列23. 模糊聚类分析原理及实现
- 格式:docx
- 大小:242.90 KB
- 文档页数:15
在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`。
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λ的分类由细变粗,渐渐合并,形成一个分级聚类树。
模糊聚类的原理和应用1. 简介模糊聚类是一种聚类分析方法,它通过考虑数据点属于不同聚类的程度,使得数据点可以同时属于多个聚类。
与传统的硬聚类方法不同,模糊聚类能够更好地处理实际问题中的复杂性和不确定性。
本文将介绍模糊聚类的原理和应用。
2. 模糊聚类的原理在传统的硬聚类方法中,每个数据点只能隶属于一个聚类,而在模糊聚类中,每个数据点可以属于多个聚类,且属于不同聚类的程度可以从0到1之间的任意值。
这种程度被称为隶属度,用来表示数据点与聚类的关联程度。
模糊聚类的原理可以通过以下步骤来解释:1.初始化聚类中心:首先随机选择一些数据点作为聚类中心。
2.计算隶属度:计算每个数据点与每个聚类中心的隶属度,可以使用模糊C均值(FCM)算法来计算。
3.更新聚类中心:根据隶属度计算出每个聚类的中心点,更新聚类中心。
4.重复步骤2和3,直到聚类中心不再变化或达到预设的迭代次数。
模糊聚类的核心是通过计算隶属度来确定每个数据点对每个聚类的归属程度,从而实现多类别的聚类。
3. 模糊聚类的应用模糊聚类在许多领域中具有广泛的应用,包括数据挖掘、模式识别、图像处理和生物信息学等。
以下是几个常见的应用领域:3.1 数据挖掘在数据挖掘中,模糊聚类可以帮助找到数据集中的隐藏模式和关联规则。
通过将数据点划分到不同的聚类中,可以更好地理解数据的结构和特征。
模糊聚类还可以用作预测分析和聚类分析的基础。
3.2 模式识别在模式识别中,模糊聚类可以帮助将输入数据分类到模式类别中。
通过考虑隶属度,模糊聚类可以更好地处理模糊和不确定性的输入数据。
这在人脸识别、手写体识别等任务中非常有用。
3.3 图像处理在图像处理中,模糊聚类被广泛应用于图像分割和图像压缩等任务。
通过将图像像素划分到不同的聚类中,可以实现图像的分割和压缩。
模糊聚类还可以用于图像特征提取和图像检索等应用。
3.4 生物信息学在生物信息学中,模糊聚类被用于处理基因表达数据和蛋白质序列数据等。
模糊聚类分析方法对所研究的事物按一定标准进行分类的数学方法称为聚类分析,它是多元统 计“物以类聚”的一种分类方法。
载科学技术、经济管理中常常要按一定的标准 (相似程度或亲疏关系)进行分类。
例如,根据生物的某些性状可对生物分类, 根据土壤的性质可对土壤分类等。
由于科学技术、经济管理中的分类界限往往不 分明,因此采用模糊聚类方法通常比较符合实际。
一、模糊聚类分析的一般步骤1、第一步:数据标准化[9](1)数据矩阵设论域U ={X i ,X 2,||l,X n }为被分类对象,每个对象又有m 个指标表示其性状,于是,得到原始数据矩阵为Xm 1X m2bI-Xnm」其中X nm 表示第n 个分类对象的第m 个指标的原始数据(2)数据标准化在实际问题中,不同的数据一般有不同的量纲,为了使不同的量纲也能进行 比较,通常需要对数据做适当的变换。
但是,即使这样,得到的数据也不一定在 区间[0,1]上。
因此,这里说的数据标准化,就是要根据模糊矩阵的要求,将数据 压缩到区间[0,1]上。
通常有以下几种变换: ① 平移•标准差变换X i = {x i1, X i2,川,X m }X i 1X2 1X n2 IHxik -(i 一 1,21 n, k_;HL 2mS k其中-1 n1 n_ 2xkxi , 2(xik~'兀)。
n i 4: n i 4经过变换后,每个变量的均值为 0,标准差为1,且消除了量纲的影响。
但是,再用得到的x k 还不一定在区间[0,1]上。
② 平移•极差变换显然有0乞x ik 乞1,而且也消除了量纲的影响 ③ 对数变换xk- lg x ik (i = 1,n , k; l [L 2 m取对数以缩小变量间的数量级。
2、第二步:标定(建立模糊相似矩阵)设论域U ={为公2,川,人} , X i ={为1必2,川,心},依照传统聚类方法确定相似 系数,建立模糊相似矩阵,x i 与X j 的相似程度用=R(X j ,X j )。
在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. 网络结构设计:确定模糊神经网络的层数和每层神经元的个数。
模糊聚类方法模糊聚类是一种基于模糊集合理论的聚类算法,它在数据分析和模式识别中得到广泛应用。
与传统的硬聚类方法相比,模糊聚类能够更好地处理数据中的不确定性和模糊性,能够给出每个数据点属于不同聚类的概率,从而更全面地描述数据的特征。
一、模糊聚类的基本原理模糊聚类的基本原理是根据数据点之间的相似性将它们分成不同的聚类。
与传统的硬聚类方法不同,模糊聚类允许数据点属于多个聚类,且给出每个数据点属于不同聚类的权重。
通过引入隶属度函数,模糊聚类能够更好地处理数据的模糊性,给出更丰富的聚类结果。
二、模糊聚类的算法步骤模糊聚类的算法步骤一般包括以下几个方面:1. 初始化隶属度矩阵:隶属度矩阵用于描述每个数据点属于每个聚类的概率,一般通过随机初始化或者根据先验信息进行初始化。
2. 计算聚类中心:根据隶属度矩阵计算每个聚类的中心点,一般采用加权平均的方式计算。
3. 更新隶属度矩阵:根据当前的聚类中心,更新隶属度矩阵,使得每个数据点更准确地属于不同聚类。
4. 判断停止条件:根据一定的准则(如隶属度矩阵的变化程度或者目标函数的收敛性)判断是否达到停止条件,如果未达到,则返回第2步继续迭代。
5. 输出聚类结果:根据最终的隶属度矩阵,确定每个数据点最可能属于的聚类,输出聚类结果。
三、模糊聚类的优势相比传统的硬聚类方法,模糊聚类具有以下优势:1. 能够更好地处理数据的模糊性和不确定性。
在现实世界的数据中,往往存在一些边界模糊或者属于多个类别的情况,传统的硬聚类无法很好地处理这种情况,而模糊聚类能够给出每个数据点属于不同聚类的概率。
2. 能够更全面地描述数据的特征。
传统的硬聚类方法只能将数据点划分为一个聚类,而模糊聚类能够给出每个数据点属于不同聚类的权重,从而更全面地描述数据的特征。
3. 能够适应不同的聚类形状和大小。
传统的硬聚类方法通常假设聚类的形状是凸的,并且假设聚类的大小相等,但在实际应用中,聚类的形状和大小往往是不确定的,而模糊聚类能够更好地适应不同的聚类形状和大小。
matlab模糊c均值聚类算法matlab模糊c均值聚类算法模糊C均值聚类算法是一种广泛应用于数据挖掘、图像分割等领域的聚类算法。
相比于传统的C均值聚类算法,模糊C均值聚类算法能够更好地处理噪声数据和模糊边界。
模糊C均值聚类算法的基本思想是将样本集合分为K个聚类集合,使得每个样本点属于某个聚类集合的概率最大。
同时,每个聚类集合的中心点被计算为该聚类集合中所有样本的均值。
具体实现中,模糊C均值聚类算法引入了模糊化权重向量来描述每个样本点属于各个聚类集合的程度。
这些权重值在每次迭代中被更新,直至达到预设的收敛精度为止。
模糊C均值聚类算法的目标函数可以表示为:J = ∑i∑j(wij)q||xi-cj||2其中,xi表示样本集合中的第i个样本,cj表示第j个聚类集合的中心点,wij表示第i个样本点属于第j个聚类集合的权重,q是模糊指数,通常取2。
不同于C均值聚类算法,模糊C均值聚类算法对每个样本点都考虑了其属于某个聚类集合的概率,因此能够更好地处理模糊边界和噪声数据。
同时,模糊C均值聚类算法可以自适应地确定聚类的数量,从而避免了事先设定聚类数量所带来的限制。
在MATLAB中,可以使用fcm函数实现模糊C均值聚类算法。
具体来说,fcm函数的使用方法如下:[idx,center] = fcm(data,k,[options]);其中,data表示样本矩阵,k表示聚类数量,options是一个包含算法参数的结构体。
fcm函数的输出包括聚类标签idx和聚类中心center。
MATLAB中的fcm函数还提供了其他参数和选项,例如模糊权重阈值、最大迭代次数和收敛精度等。
可以根据具体应用需求来设置这些参数和选项。
如何在Matlab中进行模糊聚类分析在数据分析领域,模糊聚类分析是一种常用的技术,它可以应用于各种领域的数据处理和模式识别问题。
而Matlab作为一种功能强大的数据分析工具,也提供了丰富的函数和工具箱,以支持模糊聚类分析的实施。
1. 引言模糊聚类分析是一种基于模糊集理论的聚类方法,与传统的硬聚类方法不同,它允许样本属于多个聚类中心。
这种方法的优势在于可以更好地应对数据中的不确定性和复杂性,对于某些模糊或模糊边界问题具有更好的解释能力。
2. 模糊聚类算法概述Matlab提供了多种模糊聚类算法的实现,其中最常用的是基于模糊C均值(Fuzzy C-Means,FCM)算法。
FCM算法的基本思想是通过最小化聚类后的模糊划分矩阵与原始数据之间的距离来确定每个样本所属的聚类中心。
3. 数据预处理与特征提取在进行模糊聚类分析之前,需要对原始数据进行预处理和特征提取。
预处理包括数据清洗、缺失值处理和异常值处理等;特征提取则是从原始数据中抽取出具有代表性和区分性的特征,用于模糊聚类分析。
4. 模糊聚类分析步骤在Matlab中,进行模糊聚类分析通常包括以下步骤:(1) 初始化聚类中心:通过随机选择或基于某种准则的方法初始化聚类中心。
(2) 计算模糊划分矩阵:根据当前的聚类中心,计算每个样本属于各个聚类中心的隶属度。
(3) 更新聚类中心:根据当前的模糊划分矩阵,更新聚类中心的位置。
(4) 判断终止条件:通过设置一定的终止条件,判断是否达到停止迭代的条件。
(5) 输出最终结果:得到最终的聚类结果和每个样本所属的隶属度。
5. 模糊聚类结果评估在进行模糊聚类分析后,需要对聚类结果进行评估以验证其有效性和可解释性。
常用的评估指标包括模糊划分矩阵的聚类有效性指标、外部指标和内部指标等。
通过这些指标的比较和分析,可以选择合适的模糊聚类算法和参数设置。
6. 模糊聚类的应用模糊聚类分析在诸多领域中都有广泛的应用。
例如,在图像处理中,可以利用模糊聚类方法对图像进行分割和识别;在生物信息学中,可以应用于基因表达数据的分类和模式识别等。
利用MATLAB进行模糊聚类分析1. 引言近年来,随着数据科学的飞速发展,模糊聚类分析作为一种有效的数据挖掘技术被广泛应用于各个领域。
模糊聚类分析可以在数据集中找到隐含的模式和结构,帮助人们更好地理解数据和做出预测。
本文将介绍如何利用MATLAB进行模糊聚类分析,并通过实例演示其应用。
2. 模糊聚类分析原理模糊聚类分析是一种非监督学习方法,其目标是将数据集中的样本划分为若干个模糊的聚类。
与传统的硬聚类方法不同,模糊聚类分析允许一个样本属于多个聚类的成员,这样可以更好地反映样本之间的相似性和差异性。
模糊聚类分析的核心是模糊C-均值(FCM)算法,它基于样本与聚类中心之间的模糊隶属度进行迭代优化,直到达到停止条件为止。
3. MATLAB中的模糊聚类分析工具MATLAB提供了丰富的工具箱和函数,方便进行模糊聚类分析。
其中,Fuzzy Logic Toolbox是一个强大的工具箱,提供了各种用于模糊逻辑和模糊推理的函数。
可以利用该工具箱中的函数,如genfis1和genfis2,生成模糊推理系统的模糊近似模型。
此外,MATLAB还提供了fcm函数,用于执行模糊C-均值算法进行聚类分析。
4. 实例演示假设我们有一个数据集包含N个样本和M个属性,我们希望将这些样本进行聚类分析。
首先,我们需要准备数据集,并进行预处理,如缺失值处理、标准化等。
然后,我们利用genfis1函数生成一个模糊推理系统的模糊近似模型,设置聚类数目和输入输出变量。
接下来,我们使用fcm函数执行模糊C-均值算法进行聚类分析,得到样本的隶属度矩阵和聚类中心。
5. 结果分析通过模糊聚类分析,我们可以得到每个样本对于每个聚类的隶属度,根据隶属度大小,我们可以确定每个样本的主要归属聚类。
此外,聚类中心可以用于描述聚类的特征,可以通过可视化的方式展示。
通过对结果的分析,我们可以发现潜在的模式和结构,并可以进一步进行数据挖掘和预测。
6. 总结本文介绍了利用MATLAB进行模糊聚类分析的原理和步骤,并通过实例演示了该方法的应用。
Matlab中的模糊聚类分析方法探究一、引言近年来,随着数据科学和机器学习的迅速发展,模糊聚类分析成为了处理模糊和不确定性数据的一种重要方法。
而在众多的模糊聚类算法中,Matlab中提供的模糊C-均值聚类算法(Fuzzy C-Means clustering)无疑是其中最受瞩目的。
本文旨在探究Matlab中的模糊聚类分析方法,并对其应用进行深入剖析。
二、模糊聚类分析方法概述模糊聚类分析是一种基于模糊数学的聚类方法。
与传统的硬聚类方法不同,模糊聚类允许数据点属于多个聚类中心,以概率形式给出。
这种灵活性使得模糊聚类能够更好地处理存在模糊性和不确定性的数据。
模糊C-均值算法是模糊聚类中的一种经典算法,也是Matlab中常用的模糊聚类算法。
该算法的基本思想是:通过迭代地分配数据点到聚类中心,并更新聚类中心,不断优化聚类结果。
具体而言,算法的步骤包括初始化聚类中心、计算数据点与聚类中心的距离、根据距离更新模糊划分矩阵和聚类中心等。
三、Matlab中的模糊聚类分析方法在Matlab中,模糊C-均值算法可以通过fuzzy方法或fcm方法进行实现。
这两个方法均提供了一系列参数和选项,以满足不同应用场景的需求。
1. fuzzy方法fuzzy方法是Matlab中的基于模糊理论的聚类方法。
通过设置模糊聚类的目标函数和约束条件,可以实现不同的聚类分析。
该方法对应的函数为fcm函数。
在调用fcm函数时,需要指定数据集、聚类数、迭代次数等参数。
同时,还可以通过设置模糊度指数和终止条件等参数控制聚类的具体过程。
值得一提的是,该方法还支持自动确定聚类数的操作,为聚类分析提供了更大的灵活性。
2. fcm方法fcm方法也是Matlab中的模糊C-均值算法的一种实现方式。
与fuzzy方法相比,fcm方法更加灵活,并且在处理大规模数据时速度更快。
该方法对应的函数为fcm函数。
在使用fcm函数时,需要设置与fuzzy方法类似的参数,例如数据集、聚类数和迭代次数等。
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的矩阵。
Matlab中的聚类分析与聚类算法详解绪论数据分析是现代科学和工程领域中非常重要的一项技术。
随着互联网和物联网技术的发展,数据的规模和复杂度不断增加,数据分析越来越成为解决实际问题的关键。
聚类分析是一种常用的数据分析技术,它通过将数据样本划分成具有相似性的组或簇,从而揭示数据的内在结构和模式。
在Matlab中,聚类分析功能强大且易于使用,提供了多种聚类算法,如K-means、层次聚类等。
本文将详细介绍Matlab 中的聚类分析方法及其算法。
一、K-means算法K-means算法是聚类分析中最经典且最常用的算法之一。
它将数据样本划分成K个簇,并迭代地优化簇的中心,使得簇内的样本与簇中心的距离最小化。
在Matlab中,使用kmeans函数可以轻松实现K-means算法。
K-means算法的步骤如下:1. 随机选择K个样本作为初始的K个簇中心。
2. 计算每个样本与簇中心的距离,将样本分配到离其最近的簇。
3. 更新每个簇的中心,即计算簇内所有样本的平均值。
4. 重复步骤2和步骤3,直到簇中心不再变化或达到迭代次数。
K-means算法的优点是简单、高效,并且可以处理大规模数据。
但是,它对初始簇中心的选择敏感,容易陷入局部最优解。
二、层次聚类算法层次聚类算法是另一种常见的聚类分析方法。
它通过计算样本之间的相似性,逐步合并或划分样本,构建聚类层次结构。
在Matlab中,使用clusterdata函数可以实现层次聚类算法。
层次聚类算法的步骤如下:1. 将每个样本作为一个初始簇。
2. 计算任意两个簇之间的相似性,常用的相似性度量包括欧氏距离、相关系数等。
3. 合并相似性最高的两个簇,得到新的簇。
4. 重复步骤2和步骤3,直到所有样本被合并为一个簇或达到设定的簇数。
层次聚类算法的优点是可以得到聚类层次结构,方便分析和可视化。
然而,它对数据规模较大时计算复杂度较高。
三、谱聚类算法谱聚类算法是一种基于图论的聚类方法,在处理复杂数据时具有较好的性能。
模糊神经和模糊聚类的MATLAB实现模糊神经网络(Fuzzy Neural Networks)是一种结合了模糊逻辑和神经网络的方法,用于处理不确定性和模糊性问题。
它具有模糊逻辑的灵活性和神经网络的学习和优化能力。
在MATLAB中,可以使用Fuzzy Logic Toolbox来实现模糊神经网络。
下面将介绍如何使用MATLAB实现模糊神经网络。
首先,我们需要定义输入和输出的模糊集合。
可以使用Fuzzy Logic Toolbox提供的各种方法来定义模糊集合的隶属函数,例如使用trimf定义三角隶属函数或者使用gaussmf定义高斯隶属函数。
```input1 = trimf(inputRange, [a1, b1, c1]);input2 = gaussmf(inputRange, [mean, sigma]);output = trapmf(outputRange, [d1, e1, f1, g1]);```接下来,可以使用FIS Editor界面来创建和训练模糊神经网络。
在MATLAB命令窗口中输入fuzzy命令即可打开FIS Editor界面。
在FIS Editor界面中,可以添加输入和输出变量,并设置它们的隶属函数。
然后,可以添加规则来定义输入与输出之间的关系。
规则的形式可以使用自然语言或者模糊规则表达式(Fuzzy Rule Expression)。
训练模糊神经网络可以使用基于模糊神经网络的系统识别方法。
在MATLAB中,可以使用anfis函数来进行自适应网络训练。
anfis函数可以根据训练数据自动调整隶属函数参数和规则权重,以优化模糊神经网络的性能。
```fis = anfis(trainingData);```使用trainfis命令可以将训练好的模糊神经网络应用于新的数据。
trainfis命令将输入数据映射到输出模糊集中,并使用模糊推理进行预测。
输出结果是一个模糊集,可以使用defuzz命令对其进行模糊化。
在Matlab中实现数据聚类和聚类分析的方法在Matlab中实现数据聚类和聚类分析数据聚类和聚类分析是在数据挖掘和机器学习领域中非常重要的技术。
它们能够帮助我们将相似的数据点分组,从而揭示出数据之间的内在关系和模式。
在Matlab中,有多种方法可以实现数据聚类和聚类分析,本文将介绍其中的一些常用方法。
首先,我们需要导入数据。
在Matlab中,可以使用`readtable`函数来读取.csv 或.txt文件中的数据。
如果数据是存储在Excel文件中,可以使用`xlsread`函数来读取数据。
另外,也可以手动将数据存储在一个变量中。
在进行聚类之前,我们需要对数据进行预处理。
在预处理阶段,常见的操作包括数据去噪、数据标准化、缺失值处理等。
Matlab提供了一系列函数来实现这些操作,例如`Smooth`函数用于平滑数据,`zscore`函数用于数据标准化。
完成数据预处理后,我们可以开始进行聚类算法的选择和运行。
在Matlab中,有多种聚类算法可供选择,如K-means聚类算法、层次聚类算法、高斯混合模型等。
这些算法各有特点,可根据实际问题选择。
在选择了合适的聚类算法后,我们可以使用相应的函数进行聚类。
以K-means聚类算法为例,可以使用`kmeans`函数来进行聚类操作。
聚类完成后,我们需要进行聚类结果的评估和分析。
在Matlab中,可以使用一些评估指标来度量聚类效果,如聚类轮廓系数、Davies–Bouldin指数等。
这些指标能够帮助我们评估聚类结果的紧密度和分离度。
此外,我们还可以使用可视化工具来展示聚类结果,如散点图、热力图等。
Matlab提供了许多绘图函数用于可视化,如`scatter`函数可以绘制散点图,`heatmap`函数可以绘制热力图。
除了单一的聚类算法外,我们还可以将多个聚类算法进行组合,形成集成聚类模型。
集成聚类模型能够充分发挥各种聚类算法的优势,提高聚类效果。
在Matlab中,可以使用`fitensemble`函数来构建集成聚类模型。
模糊聚类算法的原理与应用随着互联网技术迅速发展,数据呈爆炸式增长,如何从这样庞大的数据集中找出有用的信息成为了人们面临的一个重要问题,其中之一就是聚类问题。
聚类是将数据集划分为多个组或簇的过程,使得在同一组内的数据对象彼此相似度较高,不同组内的数据对象彼此相似度较低。
为了解决这个问题,很多聚类算法被提出,其中模糊聚类算法因其在实际中的适用性和效果而备受关注。
模糊聚类算法是一种基于概率和模糊逻辑的聚类技术,它不同于传统的硬聚类算法,如K-means算法,它将数据集划分为多个簇,每个数据点只属于一个簇。
模糊聚类算法相对更加灵活,它可以将数据点归属于多个簇,每个数据点到各个簇中心的距离都有一个权重值,用来表示该数据点属于该簇的程度。
模糊聚类算法的核心是模糊集合理论。
在模糊集合中,每个元素都有一个归属度,即它属于集合的程度。
这里集合指的是一个簇。
当元素属于多个簇时,每个簇的归属度都会受到影响。
通过对数据点与簇中心之间的距离进行数学建模,模糊聚类算法将相近的数据点聚集在一起生成具有模糊性质的聚类模型。
从算法步骤来看,模糊聚类算法的基本流程包括初始化隶属度矩阵、计算质心、更新隶属度矩阵和判断终止条件。
在初始化隶属度矩阵时,将数据点对于每个簇的隶属度赋值为一个随机数,保证初始簇的分布不是唯一的。
计算质心时分别计算每个簇中所有数据点的加权平均值,用来作为下一轮迭代的簇中心。
在更新隶属度矩阵时,更新每个数据点对于每个簇的隶属度,直到每个数据点的隶属度趋于稳定或满足预定的终止条件为止。
模糊聚类算法在实际应用中有着广泛的应用。
例如,在图像分割中,模糊聚类算法可以用来将相似的像素点聚集成一个区域,实现图像的分割。
在金融风险评估中,模糊聚类算法可以用来将客户归为不同的风险等级,方便银行分析客户风险。
在推荐系统中,模糊聚类算法可以将用户聚类为不同的群组,从而提高推荐准确度。
总之,模糊聚类算法是一种灵活而高效的聚类技术,它具有很广泛的应用前景。
(完整word版)模糊层次分析法的Matlab实现一、引言层析分析法是将定量与定性相结合的多目标决策法,是一种使用频率很高的方法,在经济管理、城市规划等许多领域得到了广泛应用。
由于其结果受主观思维的影响较大,许多科研工作者对其进行了深入的研究,将模糊理论与层次分析法相结合,提出了模糊层次分析法。
为克服层次分析法中判断矩阵的一致性与人类思维的一致性存在的显著差异,文献[1-2]引入了模糊一致矩阵。
为解决解的精度及收敛问题,文献[3-4]引入幂法来求排序向量。
运用模糊层次分析法研究实际问题时,常采用迭代法来得到精度更高的排序向量,这就要求选择合适的初始值并通过大量的计算,为此,文中利用三种方法计算了初始排序向量,并给出了算法的Matlab程序,最后通过实例说明。
二、模糊层次分析法为解决AHP种所存在的问题,模糊层次分析法引入模糊一致矩阵,无需再进行一致性检验,同时使用幂法来计算排序向量,可以减少迭代齿数,提高收敛速度,满足计算精度的要求.具体步骤:1.构造优先关系矩阵采用0.1~0.9标度[2],建立优先判断矩阵2.将优先关系矩阵转化为模糊一致矩阵3.计算排序向量(1)和行归一法:(2)方根法:(3)利用排序法:(4)利用幂法[5-6]求精度更高的排序向量:否则,继续迭代。
三、模糊层次分析法的程序实现给出模糊层次分析法的Matlab程序。
clear;clc;E=input('输入计算精度e:')Max=input('输入最大迭代次数Max:')F=input('输入优先关系矩阵F:');%计算模糊一致矩阵N=size(F);r=sum(F');for i=1:N(1)for j=1:N(2)R(i,j)=(r(i)-r(j))/(2*N(1))+0.5;endendE=R./R';% 计算初始向量----------% W=sum(R')./sum(sum(R)); % 和行归一法%---------------------------------------------------------for i=1:N(1)S(i)=R(i,1);for j=2:N(2)S(i)=S(i)*R(i,j);endendS=S^(1/N(1));W = S./sum(S);%方根法%-------------------------------------------------------- % a=input('参数a=?');%W=sum(R')/(N(1)*a)-1/(2*a)+1/N(1); %排序法% 利用幂法计算排序向量----V(:,1)=W'/max(abs(W)); %归一化for i=1:MaxV(:,i+1)=E*V(:,i);V(:,i+1)=V(:,i+1)/max(abs(V(:,i+1)));if max(abs(V(:,i+1)-V(:,i)))k=i;A=V(:,i+1)./sum(V(:,i+1));breakElseEndEnd四、计算实例由优先关系矩阵得到模糊一致矩阵利用三种方法计算排序向量分别为:五、结束语模糊层次分析法广泛应用于许多领域,解决了判断矩阵的一致性与人类思维一致性的差异问题,同时还得到了计算精度较高的且与实际情况较吻合的排序向量,但是模糊一致矩阵的转换和排序向量的求解计算复杂,工作量大,本文运用Matlab程序实现了该方法,能够方便的解决方法的计算问题。
模糊聚类的原理
模糊聚类是一种特殊的聚类算法,它基于模糊理论,克服了传统聚类算法对样本的唯一归属性要求的局限。
其原理是将样本划分到多个不同的聚类中心,每个样本可以同时属于不同的聚类,且属于某个聚类的隶属度可以是一个介于0和1之间的模糊值。
在模糊聚类中,每个聚类通过一个聚类中心来表示。
对于每个样本,利用模糊集合理论计算它属于每个聚类的隶属度。
隶属度表示了样本与聚类中心的相似程度。
在模糊聚类中,样本可以同时属于多个聚类,而不需要将其割裂到唯一的一个聚类中。
这样做的好处是更好地反映了真实世界中对象相互间不确定的关系。
模糊聚类的过程可以概括为以下几个步骤:
1. 初始化聚类中心:选择初始的聚类中心,可以是随机选择或者通过其他聚类算法计算得到。
2. 计算隶属度:对于每个样本,计算它与每个聚类中心的隶属度。
隶属度一般基于距离度量来计算,如欧氏距离或者曼哈顿距离。
3. 更新聚类中心:根据每个样本的隶属度,重新计算每个聚类中心的位置。
4. 重复步骤2和步骤3,直到满足停止准则,如达到最大迭代
次数或者聚类中心不再发生变化。
最后,得到的聚类结果就是每个样本与每个聚类之间的隶属度矩阵。
根据隶属度的大小,可以将样本划分到最具有高隶属度的聚类中。
模糊聚类具有一定的优势,适用于处理真实世界中存在不确定性和模糊性的问题。
模糊聚类能够更好地描述样本与聚类之间的相互关系,弥补了传统聚类方法的局限性。
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类:{u1, u3, u4, u5}, {u2}(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 a N A B A u B u u b 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.m function 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个雨量站进行模糊聚类,同一类的只需保留一个即可。