模糊K-均值算法及其matlab实现

模糊K-均值算法及其matlab实现

ID:43457998

大小:160.01 KB

页数:4页

时间:2019-10-02

模糊K-均值算法及其matlab实现_第1页
模糊K-均值算法及其matlab实现_第2页
模糊K-均值算法及其matlab实现_第3页
模糊K-均值算法及其matlab实现_第4页
资源描述:

《模糊K-均值算法及其matlab实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、模糊K-均值算法及其matlab实现模糊K-均值算法由K-均值算法派生而来。K-均值算法在聚类过程中,每次得到的结果虽然不一定是预期的结果,但类别之间的边界是明确的,聚类中心根据各类当前具有的样本进行修改。模糊K-均值算法在聚类过程中,每次得到的类别边界仍是模糊的,每类聚类中心的修改都需要用到所有样本,此外聚类准则也体现了模糊性。模糊K-均值算法聚类的结果仍是模糊集合,但是如果实际问题希望有一个明确的界限,也可以对结果进行去模糊化,通过一定的规则将模糊聚类转化为确定性分类。模糊K-均值算法基本思想是首先设定一些类及

2、每个样本对各类的隶属度;然后通过迭代,不断调整隶属度至收敛。收敛条件是隶属度的变化量小于规定的阈值。具体步骤如下:(1)确定模式类数K,,N为样本个数。(2)根据先验知识确定样本从属于各类的隶属度,建立初始隶属度矩阵,其中i为类别编号、矩阵的行号,j为样本编号、矩阵的列号。表示第个元素对第个类的隶属度。对隶属度矩阵的第列而言,它表示第个元素分别对各模式类的隶属度,因此矩阵的每列元素之和为1。(3)求各类的聚类中心,L为迭代次数。式中,参数,是一个控制聚类结果模糊程度的参数。可以看出各聚类中心的计算必须用到全部的N个

3、样本,这是与一般(非模糊)K-均值算法的区别之一。在一般(非模糊)K-均值算法中,某一类的聚类中心仅由该类样本决定,不涉及其他类。(4)计算新的隶属度矩阵U(L+1),矩阵元素计算如下:,式中,是第L次迭代完成时,第j个样本到第i类聚类中心的距离。为避免分母为零,特别的若,则可见,越大,越小。(5)回到(3)求聚类中心,重复至收敛。收敛条件:,其中为规定的参数。当算法收敛时,就得到了各类的聚类中心以及表示个样本对各类隶属程度的隶属度矩阵,模糊聚类到此结束。这时,准则函数达到最小。(6)根据隶属度矩阵U(L+1)进行

4、聚类,按照隶属原则进行划分,即若则类。例设有4个二维样本,分别是,,,去参数,利用模糊K-均值算法把它们聚为两类。解:(1)根据要求N=4,K=2。(2)根据先验知识确定初始隶属度矩阵由U(0)可知,倾向于,,为一类,为一类。(3)计算聚类中心、,取m=2,有(4)计算新的隶属度矩阵U(1)。取m=2,分别计算,以为例有得类似地,可得到U(1)中其它元素,有若满足收敛条件,则迭代结束,否则返回(3)计算聚类中心。假设此时满足收敛条件,迭代结束,则根据U(1)进行聚类。,,,,Matlab代码实现如下:functio

5、ny=fuzzy_Kmeans(X,k,m,U,e)k=2;%自定义k个类中心数X=[00;01;31;32];%样本U=[0.90.80.70.1;0.10.20.30.9];%隶属度初始值%loadfisheriris;X=meas;[M,N]=size(X);U=1/k*ones(k,M);U(1,1)=U(1,1)-0.1;U(k,1)=U(k,1)+0.1;%Iris测试数据集,目的是让U的值不全为1/k%%%%%%%%%%%%初始化m=2;%控制模糊程度的参数e=0.0001;%达到收敛时最小误差UL=

6、membership(U,X,m);%求隶属度err=abs(UL-U);%误差while(max(err(1,:))>e)%收敛条件没达到要求,则继续迭代temp=UL;%保存先前的隶属度UL=membership(UL,X,m);%更新隶属度err=abs(UL-temp);%更新误差endUL%输出最终的隶属度矩阵%%%%%%%%%%%%%通过最终所获得的隶属度矩阵,判断样本所属类别class=cell(k,1);%初始化类样本classfori=1:size(X,1);[MAX,index]=max(UL(

7、:,i));class{index}=cat(1,class{index},i);endcelldisp(class);%显示Kmeans聚类结果%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%子函数部分functiony=membership(U0,X,m)%U0初始隶属度矩阵,X为需聚类样本,m为控制聚类结果的模糊程度,y为返回的新的隶属度classNum=size(U0,1);%求出类别数fori=1:classNumU0(i,:)=U0(i,:).^m;%隶属度各值平方endZ=

8、zeros(classNum,size(X,2));%聚类中心初始化fori=1:classNumforj=1:size(X,1)Z(i,:)=Z(i,:)+U0(i,j)*X(j,:);endZ(i,:)=Z(i,:)/sum(U0(i,:));%计算聚类中心endfori=1:size(X,1)forj=1:size(Z,1)d(i,j)=dist(X(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。