FCM聚类算法介绍
k-means聚类和fcm聚类的原理概念

k-means聚类和fcm聚类的原理概念摘要:一、聚类分析概述1.定义与作用2.常用的聚类算法二、K-means 聚类原理1.算法基本思想2.计算过程3.特点与优缺点三、FCM 聚类原理1.算法基本思想2.计算过程3.特点与优缺点四、K-means 与FCM 聚类的比较1.相似之处2.不同之处3.适用场景正文:一、聚类分析概述聚类分析是一种无监督学习方法,通过将相似的数据对象归为一类,从而挖掘数据集的潜在结构和模式。
聚类分析在数据挖掘、模式识别、图像处理、生物学研究等领域具有广泛应用。
常用的聚类算法有K-means 聚类和FCM 聚类等。
二、K-means 聚类原理1.算法基本思想K-means 聚类是一种基于划分的聚类方法,通过迭代计算数据点与当前中心点的距离,将数据点分配到距离最近的中心点所属的簇,然后更新中心点。
这个过程持续进行,直到满足停止条件。
2.计算过程(1)随机选择k 个数据点作为初始中心点。
(2)计算其他数据点与初始中心点的距离,将数据点分配到距离最近的簇。
(3)计算每个簇的中心点。
(4)重复步骤2 和3,直到中心点不再发生变化或达到最大迭代次数。
3.特点与优缺点特点:简单、易于实现,适用于大规模数据集。
优点:可以处理大规模数据集,对噪声数据具有一定的鲁棒性。
缺点:对初始中心点敏感,可能导致局部最优解;计算过程中需要反复计算距离,计算量较大。
三、FCM 聚类原理1.算法基本思想FCM 聚类是一种基于模糊划分的聚类方法,通过计算数据点与当前中心点的模糊距离,将数据点分配到距离最近的簇。
模糊距离是基于隶属度函数计算的,可以反映数据点对簇的隶属程度。
2.计算过程(1)随机选择k 个数据点作为初始中心点。
(2)计算其他数据点与初始中心点的模糊距离,将数据点分配到距离最近的簇。
(3)计算每个簇的中心点。
(4)重复步骤2 和3,直到中心点不再发生变化或达到最大迭代次数。
3.特点与优缺点特点:考虑了数据点对簇的隶属程度,具有更好的全局优化性能。
FCM聚类算法范文

FCM聚类算法范文FCM(Fuzzy C-Means)聚类算法是一种基于模糊理论的聚类算法,它可以将数据分为不同的集群。
相比于传统的硬聚类算法,FCM算法允许数据点同时属于多个集群,这使得FCM算法具有更高的灵活性和鲁棒性。
在本文中,我们将详细介绍FCM聚类算法的原理、步骤和优缺点。
FCM聚类算法的原理是基于模糊集合的理论。
在传统的硬聚类算法中,每个数据点只能属于一个集群,而在FCM算法中,每个数据点可以以不同的概率属于不同的集群。
换句话说,FCM算法为每个数据点分配多个隶属度值,用来表示该数据点属于各个集群的程度。
FCM算法的步骤如下:1.随机初始化每个数据点的隶属度值。
这些隶属度值通常被初始化为0或者随机值。
2.更新聚类中心。
根据当前的隶属度值,计算每个集群的聚类中心。
聚类中心是根据数据点加权平均计算得到的。
3.重新计算隶属度值。
根据当前的聚类中心,计算每个数据点对每个集群的隶属度值。
这个计算是基于欧氏距离和模糊化函数来完成的。
4.重复步骤2和步骤3,直到达到停止条件。
停止条件通常是隶属度值不再变化或者达到最大迭代次数。
FCM算法的优点是具有很好的鲁棒性和灵活性。
由于每个数据点可以属于多个集群,FCM算法对于噪声和异常值具有较好的鲁棒性。
此外,FCM算法还可以处理难以分离的数据集,因为它在隶属度上使用了模糊化函数,可以更好地表达数据点与集群之间的模糊边界。
然而,FCM算法也存在一些缺点。
首先,FCM算法对初始聚类中心的选择较为敏感,不同的初始聚类中心可能会导致不同的聚类结果。
其次,FCM算法需要指定聚类的数量,这对于一些数据集来说可能是一个挑战。
另外,FCM算法的计算复杂度比较高,时间复杂度为O(k*n*d*m),其中k 是聚类的数量,n是数据点的数量,d是数据的维度,m是迭代次数。
总而言之,FCM聚类算法是一种基于模糊理论的聚类算法,它具有很好的灵活性和鲁棒性。
它可以将数据点同时分配给多个集群,并且可以处理噪声和模糊边界。
fcm聚类算法python实现

FCM 聚类算法python 实现一、介绍在机器学习和数据挖掘领域,聚类是一种常用的数据分析技术,它将相似的数据点归类到同一个簇中。
FCM (Fuzzy C-Means )聚类算法是一种经典的模糊聚类算法,它基于模糊理论,允许数据点属于多个簇的程度不同。
本文将介绍FCM 聚类算法的原理,并使用Python 实现。
二、FCM 聚类算法原理FCM 聚类算法是一种迭代的聚类算法,它基于模糊理论,通过最小化目标函数来找到最优的聚类结果。
算法的基本思想是:对于每个数据点,计算其属于每个簇的隶属度,然后根据隶属度更新簇的中心,迭代直到收敛。
2.1 目标函数FCM 聚类算法的目标函数是一个关于隶属度和簇中心的函数,可以表示为:J m =∑∑u ijm cj=1n i=1||x i −v j ||2 其中,J m 是目标函数值,n 是数据点的个数,c 是簇的个数,u ij 是第i 个数据点属于第j 个簇的隶属度,m 是模糊参数,x i 是第i 个数据点,v j 是第j 个簇的中心。
2.2 隶属度更新在FCM 聚类算法中,隶属度表示数据点属于每个簇的程度。
隶属度的计算公式如下:u ij =1∑(||x i −v j ||||x i −v k ||)2m−1c k=1 其中,u ij 是第i 个数据点属于第j 个簇的隶属度,x i 是第i 个数据点,v j 是第j 个簇的中心,c 是簇的个数,m 是模糊参数。
2.3 簇中心更新在FCM 聚类算法中,簇中心表示每个簇的中心点。
簇中心的计算公式如下:v j =∑u ij m n i=1x i ∑u ijm n i=1其中,v j是第j个簇的中心,u ij是第i个数据点属于第j个簇的隶属度,x i是第i个数据点,n是数据点的个数,m是模糊参数。
三、Python实现接下来,我们将使用Python实现FCM聚类算法,并使用一个示例数据集进行演示。
3.1 导入库首先,我们需要导入一些常用的Python库,包括numpy和sklearn。
关于模糊c均值聚类算法

FCM模糊c均值1、原理详解模糊c-均值聚类算法fuzzy c-means algorithm (FCMA)或称(FCM)。
在众多模糊聚类算法中,模糊C-均值(FCM)算法应用最广泛且较成功,它通过优化目标函数得到每个样本点对所有类中心的隶属度,从而决定样本点的类属以达到自动对样本数据进行分类的目的。
聚类的经典例子然后通过机器学习中提到的相关的距离开始进行相关的聚类操作经过一定的处理之后可以得到相关的cluster,而cluster之间的元素或者是矩阵之间的距离相对较小,从而可以知晓其相关性质与参数较为接近C-Means Clustering:固定数量的集群。
每个群集一个质心。
每个数据点属于最接近质心对应的簇。
1.1关于FCM的流程解说其经典状态下的流程图如下所示集群是模糊集合。
一个点的隶属度可以是0到1之间的任何数字。
一个点的所有度数之和必须加起来为1。
1.2关于k均值与模糊c均值的区别k均值聚类:一种硬聚类算法,隶属度只有两个取值0或1,提出的基本根据是“类内误差平方和最小化”准则,进行相关的必要调整优先进行优化看是经典的欧拉距离,同样可以理解成通过对于cluster的类的内部的误差求解误差的平方和来决定是否完成相关的聚类操作;模糊的c均值聚类算法:一种模糊聚类算法,是k均值聚类算法的推广形式,隶属度取值为[0 1]区间内的任何数,提出的基本根据是“类内加权误差平方和最小化”准则;这两个方法都是迭代求取最终的聚类划分,即聚类中心与隶属度值。
两者都不能保证找到问题的最优解,都有可能收敛到局部极值,模糊c均值甚至可能是鞍点。
1.2.1关于kmeans详解K-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则。
K-means算法以欧式距离作为相似度测度,它是求对应某一初始聚类中心向量V最优分类,使得评价指标J最小。
模糊聚类算法(FCM)

模糊聚类算法(FCM)伴随着模糊集理论的形成、发展和深化,RusPini率先提出模糊划分的概念。
以此为起点和基础,模糊聚类理论和⽅法迅速蓬勃发展起来。
针对不同的应⽤,⼈们提出了很多模糊聚类算法,⽐较典型的有基于相似性关系和模糊关系的⽅法、基于模糊等价关系的传递闭包⽅法、基于模糊图论的最⼤⽀撑树⽅法,以及基于数据集的凸分解、动态规划和难以辨别关系等⽅法。
然⽽,上述⽅法均不能适⽤于⼤数据量的情况,难以满⾜实时性要求较⾼的场合,因此实际应⽤并不⼴泛。
模糊聚类分析按照聚类过程的不同⼤致可以分为三⼤类:(1)基于模糊关系的分类法:其中包括谱系聚类算法(⼜称系统聚类法)、基于等价关系的聚类算法、基于相似关系的聚类算法和图论聚类算法等等。
它是研究⽐较早的⼀种⽅法,但是由于它不能适⽤于⼤数据量的情况,所以在实际中的应⽤并不⼴泛。
(2)基于⽬标函数的模糊聚类算法:该⽅法把聚类分析归结成⼀个带约束的⾮线性规划问题,通过优化求解获得数据集的最优模糊划分和聚类。
该⽅法设计简单、解决问题的范围⼴,还可以转化为优化问题⽽借助经典数学的⾮线性规划理论求解,并易于计算机实现。
因此,随着计算机的应⽤和发展,基于⽬标函数的模糊聚类算法成为新的研究热点。
(3)基于神经⽹络的模糊聚类算法:它是兴起⽐较晚的⼀种算法,主要是采⽤竞争学习算法来指导⽹络的聚类过程。
在介绍算法之前,先介绍下模糊集合的知识。
HCM聚类算法⾸先说明⾪属度函数的概念。
⾪属度函数是表⽰⼀个对象x ⾪属于集合A 的程度的函数,通常记做µA(x),其⾃变量范围是所有可能属于集合A 的对象(即集合A 所在空间中的所有点),取值范围是[0,1],即0<=µA(x),µA(x)<=1。
µA(x)=1 表⽰x 完全⾪属于集合A,相当于传统集合概念上的x∈A。
⼀个定义在空间X={x}上的⾪属度函数就定义了⼀个模糊集合A,或者叫定义在论域X={x}上的模糊⼦集A’。
模糊c均值聚类算法的概念

模糊c均值聚类算法的概念
模糊C均值聚类算法(Fuzzy C-means clustering algorithm,简
称FCM)是一种基于模糊理论的聚类算法,用于将数据集划
分为若干个模糊的子集,每个子集代表一个聚类。
FCM算法的目标是最小化数据点与聚类中心之间的模糊距离。
模糊距离所描述的是一个数据点属于每个聚类的可能性,而不仅仅是属于一个特定聚类的二进制标识。
FCM算法的步骤如下:
1. 初始化聚类中心,可以随机选择数据点作为初始中心。
2. 根据初始聚类中心,计算每个数据点对于每个聚类中心的成员关系度(即属于每个聚类的可能性)。
3. 根据成员关系度更新聚类中心,计算每个聚类中心的坐标。
4. 重复步骤2和3,直到聚类中心不再发生变化或达到最大迭
代次数。
在每次迭代中,FCM算法根据每个数据点到聚类中心的距离
计算其模糊隶属度,按照隶属度对数据点进行聚类。
每个数据点隶属于每个聚类的可能性是在0到1之间连续变化的,表示了数据点与每个聚类之间的相似程度。
相比于传统的硬聚类算法,模糊C均值聚类算法允许数据点
属于多个聚类,更好地处理了数据点的模糊性,适用于数据集中存在重叠样本或不确定性较高的场景。
fcm算法在数据挖掘中的应用课设

fcm算法在数据挖掘中的应用课设FCM(Fuzzy C-Means)算法是一种常用的聚类算法,它在数据挖掘中有着广泛的应用。
本文将介绍FCM算法在数据挖掘中的应用,并深入探讨其原理和优势。
一、FCM算法简介FCM算法是基于模糊数学理论的一种聚类算法。
与传统的K-means 算法相比,FCM算法允许样本属于多个类别,从而更准确地描述数据的特征。
FCM算法通过计算样本与聚类中心的距离,不断迭代更新聚类中心,直到达到收敛条件。
二、FCM算法的原理FCM算法的核心是模糊集合理论。
在FCM算法中,每个样本都有一组隶属度,表示它属于每个类别的程度。
隶属度的值在0到1之间,表示样本属于该类别的可能性。
根据隶属度,可以计算每个样本与聚类中心的距离,从而确定其所属的类别。
FCM算法的步骤如下:1. 初始化聚类中心和隶属度矩阵。
2. 根据当前的聚类中心和隶属度,计算每个样本与聚类中心的距离。
3. 更新隶属度矩阵,根据每个样本与聚类中心的距离重新计算样本的隶属度。
4. 更新聚类中心,根据当前的隶属度矩阵重新计算聚类中心的位置。
5. 重复步骤2到步骤4,直到达到收敛条件。
三、FCM算法的优势1. 允许样本属于多个类别,更准确地描述数据的特征。
在一些模糊的数据集中,FCM算法能够更好地适应数据的特征。
2. 对噪声和异常值具有较好的鲁棒性。
FCM算法通过隶属度矩阵来描述样本与聚类中心的关系,从而对噪声和异常值相对不敏感。
3. 不需要预先设定聚类的个数。
与K-means算法需要预先设定聚类个数不同,FCM算法通过隶属度矩阵来描述样本与聚类中心的关系,从而自动确定聚类的个数。
四、FCM算法在数据挖掘中的应用1. 图像分割。
FCM算法可以将图像中的像素点划分到不同的类别中,从而实现图像的分割。
在医学图像处理中,FCM算法常被用于识别病变区域。
2. 文本分类。
FCM算法可以将文本数据划分到不同的类别中,从而实现文本的分类。
在信息检索和情感分析等领域,FCM算法常被用于文本分类。
FCM聚类算法介绍

ci ( x ci )
(6.8)
这种在线公式本质上嵌入了许多非监督学习神经元网络的学习法则。 6.2.3 模糊 C 均值聚类 模糊 C 均值聚类(FCM) ,即众所周知的模糊 ISODATA,是用隶属度确定每个数据点 属于某个聚类的程度的一种聚类算法。1973 年,Bezdek 提出了该算法,作为早期硬 C 均值 聚类(HCM)方法的一种改进。
FCM 聚类算法介绍
FCM 算法是一种基于划分的聚类算法,它的思想就是使得被划分到同一簇的对象之间 相似度最大,而不同簇之间的相似度最小。模糊 C 均值算法是普通 C 均值算法的改进,普 通 C 均值算法对于数据的划分是硬性的,而 FCM 则是一种柔性的模糊划分。在介绍 FCM 具体算法之前我们先介绍一些模糊集合的基本知识。 6.1.1 模糊集基本知识[21] 首先说明隶属度函数的概念。隶属度函数是表示一个对象 x 隶属于集合 A 的程度的函 数,通常记做μA(x),其自变量范围是所有可能属于集合 A 的对象(即集合 A 所在空间中 的所有点) ,取值范围是[0,1],即 0<= μA(x)<=1。μA(x)=1 表示 x 完全隶属于集合 A,相当于传统集合概念上的 x∈A。一个定义 在空间 X={x}上的隶属度函数就定义了一个模糊集合 A, 或者叫定义在论域 X={x}上的模糊 子集 A 。对于有限个对象 x1,x2,……,xn 模糊集合 A 可以表示为:
J
这里 Ji
Ji i
1
c
xk (k x|| i Gi
1 ,
k
c
ci ||2 )
(6.2)
( || x
i 1 k , xk Gi
c
k
ci || 2 ) 是组 i 内的价值函数。这样 Ji 的值依赖于 Gi 的几何特性和 ci
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FCM 聚类算法介绍FCM 算法是一种基于划分的聚类算法,它的思想就是使得被划分到同一簇的对象之间相似度最大,而不同簇之间的相似度最小。
模糊C 均值算法是普通C 均值算法的改进,普通C 均值算法对于数据的划分是硬性的,而FCM 则是一种柔性的模糊划分。
在介绍FCM 具体算法之前我们先介绍一些模糊集合的基本知识。
6.1.1 模糊集基本知识[21]首先说明隶属度函数的概念。
隶属度函数是表示一个对象x 隶属于集合A 的程度的函数,通常记做μA (x),其自变量范围是所有可能属于集合A 的对象(即集合A 所在空间中的所有点),取值范围是[0,1],即0<=μA (x)<=1。
μA (x)=1表示x 完全隶属于集合A ,相当于传统集合概念上的x ∈A 。
一个定义在空间X={x}上的隶属度函数就定义了一个模糊集合A ,或者叫定义在论域X={x}上的模糊子集~A 。
对于有限个对象x 1,x 2,……,x n 模糊集合~A 可以表示为:}|)),({(~X x x x A i i i A ∈=μ (6.1)有了模糊集合的概念,一个元素隶属于模糊集合就不是硬性的了,在聚类的问题中,可以把聚类生成的簇看成模糊集合,因此,每个样本点隶属于簇的隶属度就是[0,1]区间里面的值。
6.1.2 K 均值聚类算法(HCM)介绍K 均值聚类,即众所周知的C 均值聚类,已经应用到各种领域。
它的核心思想如下:算法把n 个向量x j (1,2…,n)分为c 个组G i (i=1,2,…,c),并求每组的聚类中心,使得非相似性(或距离)指标的价值函数(或目标函数)达到最小。
当选择欧几里德距离为组j 中向量x k 与相应聚类中心c i 间的非相似性指标时,价值函数可定义为:∑∑∑=∈=-==ci Gix k i kci k c xJi J 1,21)||||( (6.2)这里∑∑=∈-=ci Gix k i kk c xJi 1,2)||||(是组i 内的价值函数。
这样J i 的值依赖于G i 的几何特性和c i的位置。
一般来说,可用一个通用距离函数d(x k ,c i )代替组I 中的向量x k ,则相应的总价值函数可表示为:∑∑∑==∈-==ci ci Gix k i kk c xJi J 11,))d(( (6.3)为简单起见,这里用欧几里德距离作为向量的非相似性指标,且总的价值函数表示为(6.2)式。
划分过的组一般用一个c ×n 的二维隶属矩阵U 来定义。
如果第j 个数据点x j 属于组i ,则U 中的元素u ij 为1;否则,该元素取0。
一旦确定聚类中心ci ,可导出如下使式(6.2)最小u ij :⎪⎩⎪⎨⎧-≤-≠=其它,如果对每个0,122kj i j ijc x c x i k u (6.4)重申一点,如果c i 是x j 的最近的聚类中心,那么x j 属于组i 。
由于一个给定数据只能属于一个组,所以隶属矩阵U 具有如下性质:n j uci ij,,111⋯=∀=∑=,(6.5)且n uci nj ij=∑∑==11(6.6)另一方面,如果固定u ij 则使(6.2)式最小的最佳聚类中心就是组I 中所有向量的均值:∑∈=ik G x k kii xG c ,1, (6.7)这里|G i |是G i 的规模或∑==n j ij i u G 1。
为便于批模式运行,这里给出数据集x i (1,2…,n )的K 均值算法;该算法重复使用下列步骤,确定聚类中心c i 和隶属矩阵U :步骤1:初始化聚类中心c i ,i=1,…,c 。
典型的做法是从所有数据点中任取c 个点。
步骤2:用式(6.4)确定隶属矩阵U 。
步骤3:根据式(6.2)计算价值函数。
如果它小于某个确定的阀值,或它相对上次价值函数质的改变量小于某个阀值,则算法停止。
步骤4:根据式(6.5)修正聚类中心。
返回步骤2。
该算法本身是迭代的,且不能确保它收敛于最优解。
K 均值算法的性能依赖于聚类中心的初始位置。
所以,为了使它可取,要么用一些前端方法求好的初始聚类中心;要么每次用不同的初始聚类中心,将该算法运行多次。
此外,上述算法仅仅是一种具有代表性的方法;我们还可以先初始化一个任意的隶属矩阵,然后再执行迭代过程。
K 均值算法也可以在线方式运行。
这时,通过时间平均,导出相应的聚类中心和相应的组。
即对于给定的数据点x ,该算法求最近的聚类中心c i ,并用下面公式进行修正:)(i i c x c -=∆η (6.8)这种在线公式本质上嵌入了许多非监督学习神经元网络的学习法则。
6.2.3 模糊C 均值聚类模糊C 均值聚类(FCM ),即众所周知的模糊ISODA TA ,是用隶属度确定每个数据点属于某个聚类的程度的一种聚类算法。
1973年,Bezdek 提出了该算法,作为早期硬C 均值聚类(HCM )方法的一种改进。
FCM 把n 个向量x i (i=1,2,…,n )分为c 个模糊组,并求每组的聚类中心,使得非相似性指标的价值函数达到最小。
FCM 与HCM 的主要区别在于FCM 用模糊划分,使得每个给定数据点用值在0,1间的隶属度来确定其属于各个组的程度。
与引入模糊划分相适应,隶属矩阵U 允许有取值在0,1间的元素。
不过,加上归一化规定,一个数据集的隶属度的和总等于1:∑==∀=ci ijn j u1,...,1,1 (6.9)那么,FCM 的价值函数(或目标函数)就是式(6.2)的一般化形式:∑∑∑====ci njij m ijci ic d uJc c U J 1211),...,,(, (6.10)这里u ij 介于0,1间;c i 为模糊组I 的聚类中心,d ij =||c i -x j ||为第I 个聚类中心与第j 个数据点间的欧几里德距离;且[)∞∈,1m 是一个加权指数。
构造如下新的目标函数,可求得使(6.10)式达到最小值的必要条件:∑∑∑∑∑∑=====-+=-+=nj ci ijjci njij mijn j ci ij j c n c ud uu c c U J c c U J 111211111)1()1(),...,,(),...,,,...,,(λλλλ (6.11)这里λj ,j=1到n ,是(6.9)式的n 个约束式的拉格朗日乘子。
对所有输入参量求导,使式(6.10)达到最小的必要条件为:∑∑===nj mijnj jm iji u x uc 11 (6.12)和∑=-⎪⎪⎭⎫ ⎝⎛=ck m kjij ij d d u 1)1/(21(6.13)由上述两个必要条件,模糊C 均值聚类算法是一个简单的迭代过程。
在批处理方式运行时,FCM 用下列步骤确定聚类中心c i 和隶属矩阵U[1]:步骤1:用值在0,1间的随机数初始化隶属矩阵U ,使其满足式(6.9)中的约束条件 步骤2:用式(6.12)计算c 个聚类中心c i ,i=1,…,c 。
步骤3:根据式(6.10)计算价值函数。
如果它小于某个确定的阀值,或它相对上次价值函数值的改变量小于某个阀值,则算法停止。
步骤4:用(6.13)计算新的U 矩阵。
返回步骤2。
上述算法也可以先初始化聚类中心,然后再执行迭代过程。
由于不能确保FCM 收敛于一个最优解。
算法的性能依赖于初始聚类中心。
因此,我们要么用另外的快速算法确定初始聚类中心,要么每次用不同的初始聚类中心启动该算法,多次运行FCM 。
6.2.4 FCM 算法的应用通过上面的讨论,我们不难看出FCM 算法需要两个参数一个是聚类数目C ,另一个是参数m 。
一般来讲C 要远远小于聚类样本的总个数,同时要保证C>1。
对于m ,它是一个控制算法的柔性的参数,如果m 过大,则聚类效果会很次,而如果m 过小则算法会接近HCM 聚类算法。
算法的输出是C 个聚类中心点向量和C*N 的一个模糊划分矩阵,这个矩阵表示的是每个样本点属于每个类的隶属度。
根据这个划分矩阵按照模糊集合中的最大隶属原则就能够确定每个样本点归为哪个类。
聚类中心表示的是每个类的平均特征,可以认为是这个类的代表点。
从算法的推导过程中我们不难看出,算法对于满足正态分布的数据聚类效果会很好,另外,算法对孤立点是敏感的。
clear all;load iris_tr;load iris_te;H=1;% m为要生成的族的数目m=3;% num(n)为第n类的记录条数for n=1:mnum(n)=0;end[rows,cols]=size(IRIS_training_data);for I=1:rowsif IRIS_training_data(I,6)==1IRIS_training_data(I,5)=2;endif IRIS_training_data(I,7)==1IRIS_training_data(I,5)=3;endendnew_iris=IRIS_training_data(:,1:5);% 对test进行观察式学习分类test=IRIS_training_data(:,1:4);%随机选择三条连续记录作为初始的三个类for I=1:mc(I)=floor(rand(1)*75)+1;endfor J=1:mfor I=1:4class{J}(I)=test(c(J),I);endendwhile H==1for I=1:rowsfor K=1:md(K)=sqrt((class{K}(1)-test(I,1))^2+(class{K}(2)-test(I,2))^2+(class{K}(3)-test(I,3))^2+(class{K }(4)-test(I,4))^2);end[y,t]=min(d);num(t)=num(t)+1;test(I,5)=t;for J=1:4last_class{t}=class{t};class{t}(J)=(test(I,J)+class{t}(J)*num(t))/(num(t)+1);endend% 判断结束条件是否满足for K=1:md(K)=sqrt((last_class{K}(1)-class{K}(1))^2+(last_class{K}(2)-class{K}(2))^2+(last_class{K}(3) -class{K}(3))^2+(last_class{K}(4)-class{K}(4))^2);end[y,t]=max(d);if y<0.0001;break;endend% 与实际的分类对比计算出预测的正确率for I=1:mclass11(I)=0;class21(I)=0;class31(I)=0;endfor I=1:3:rowsif test(I,5)==1class11(1)=class11(1)+1;elseif test(I,5)==2class11(2)=class11(2)+1;else class11(3)=class11(3)+1;end[right_num,t]=max(class11);endfor I=2:3:rowsif test(I,5)==1class21(1)=class21(1)+1;elseif test(I,5)==2class21(2)=class21(2)+1;else class21(3)=class21(3)+1;endright_num=right_num+max(class21);for I=3:3:rowsif test(I,5)==1class31(1)=class31(1)+1;elseif test(I,5)==2class31(2)=class31(2)+1;else class31(3)=class31(3)+1;endendright_num=right_num+max(class31);right_num=(right_num/rows)*100;disp(sprintf('利用k_means给iris数据集分类的正确率为:%d%%',right_num));。