zoukankan      html  css  js  c++  java
  • FCM算法的matlab程序(初步)

    FCM算法的matlab程序

    https://www.cnblogs.com/kailugaji/p/9648430.html 文章中已经介绍了FCM算法,现在用matlab程序实现它。

    作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/

    1.采用iris数据库

    iris_data.txt

    5.1    3.5    1.4    0.2
    4.9    3    1.4    0.2
    4.7    3.2    1.3    0.2
    4.6    3.1    1.5    0.2
    5    3.6    1.4    0.2
    5.4    3.9    1.7    0.4
    4.6    3.4    1.4    0.3
    5    3.4    1.5    0.2
    4.4    2.9    1.4    0.2
    4.9    3.1    1.5    0.1
    5.4    3.7    1.5    0.2
    4.8    3.4    1.6    0.2
    4.8    3    1.4    0.1
    4.3    3    1.1    0.1
    5.8    4    1.2    0.2
    5.7    4.4    1.5    0.4
    5.4    3.9    1.3    0.4
    5.1    3.5    1.4    0.3
    5.7    3.8    1.7    0.3
    5.1    3.8    1.5    0.3
    5.4    3.4    1.7    0.2
    5.1    3.7    1.5    0.4
    4.6    3.6    1    0.2
    5.1    3.3    1.7    0.5
    4.8    3.4    1.9    0.2
    5    3    1.6    0.2
    5    3.4    1.6    0.4
    5.2    3.5    1.5    0.2
    5.2    3.4    1.4    0.2
    4.7    3.2    1.6    0.2
    4.8    3.1    1.6    0.2
    5.4    3.4    1.5    0.4
    5.2    4.1    1.5    0.1
    5.5    4.2    1.4    0.2
    4.9    3.1    1.5    0.2
    5    3.2    1.2    0.2
    5.5    3.5    1.3    0.2
    4.9    3.6    1.4    0.1
    4.4    3    1.3    0.2
    5.1    3.4    1.5    0.2
    5    3.5    1.3    0.3
    4.5    2.3    1.3    0.3
    4.4    3.2    1.3    0.2
    5    3.5    1.6    0.6
    5.1    3.8    1.9    0.4
    4.8    3    1.4    0.3
    5.1    3.8    1.6    0.2
    4.6    3.2    1.4    0.2
    5.3    3.7    1.5    0.2
    5    3.3    1.4    0.2
    7    3.2    4.7    1.4
    6.4    3.2    4.5    1.5
    6.9    3.1    4.9    1.5
    5.5    2.3    4    1.3
    6.5    2.8    4.6    1.5
    5.7    2.8    4.5    1.3
    6.3    3.3    4.7    1.6
    4.9    2.4    3.3    1
    6.6    2.9    4.6    1.3
    5.2    2.7    3.9    1.4
    5    2    3.5    1
    5.9    3    4.2    1.5
    6    2.2    4    1
    6.1    2.9    4.7    1.4
    5.6    2.9    3.6    1.3
    6.7    3.1    4.4    1.4
    5.6    3    4.5    1.5
    5.8    2.7    4.1    1
    6.2    2.2    4.5    1.5
    5.6    2.5    3.9    1.1
    5.9    3.2    4.8    1.8
    6.1    2.8    4    1.3
    6.3    2.5    4.9    1.5
    6.1    2.8    4.7    1.2
    6.4    2.9    4.3    1.3
    6.6    3    4.4    1.4
    6.8    2.8    4.8    1.4
    6.7    3    5    1.7
    6    2.9    4.5    1.5
    5.7    2.6    3.5    1
    5.5    2.4    3.8    1.1
    5.5    2.4    3.7    1
    5.8    2.7    3.9    1.2
    6    2.7    5.1    1.6
    5.4    3    4.5    1.5
    6    3.4    4.5    1.6
    6.7    3.1    4.7    1.5
    6.3    2.3    4.4    1.3
    5.6    3    4.1    1.3
    5.5    2.5    4    1.3
    5.5    2.6    4.4    1.2
    6.1    3    4.6    1.4
    5.8    2.6    4    1.2
    5    2.3    3.3    1
    5.6    2.7    4.2    1.3
    5.7    3    4.2    1.2
    5.7    2.9    4.2    1.3
    6.2    2.9    4.3    1.3
    5.1    2.5    3    1.1
    5.7    2.8    4.1    1.3
    6.3    3.3    6    2.5
    5.8    2.7    5.1    1.9
    7.1    3    5.9    2.1
    6.3    2.9    5.6    1.8
    6.5    3    5.8    2.2
    7.6    3    6.6    2.1
    4.9    2.5    4.5    1.7
    7.3    2.9    6.3    1.8
    6.7    2.5    5.8    1.8
    7.2    3.6    6.1    2.5
    6.5    3.2    5.1    2
    6.4    2.7    5.3    1.9
    6.8    3    5.5    2.1
    5.7    2.5    5    2
    5.8    2.8    5.1    2.4
    6.4    3.2    5.3    2.3
    6.5    3    5.5    1.8
    7.7    3.8    6.7    2.2
    7.7    2.6    6.9    2.3
    6    2.2    5    1.5
    6.9    3.2    5.7    2.3
    5.6    2.8    4.9    2
    7.7    2.8    6.7    2
    6.3    2.7    4.9    1.8
    6.7    3.3    5.7    2.1
    7.2    3.2    6    1.8
    6.2    2.8    4.8    1.8
    6.1    3    4.9    1.8
    6.4    2.8    5.6    2.1
    7.2    3    5.8    1.6
    7.4    2.8    6.1    1.9
    7.9    3.8    6.4    2
    6.4    2.8    5.6    2.2
    6.3    2.8    5.1    1.5
    6.1    2.6    5.6    1.4
    7.7    3    6.1    2.3
    6.3    3.4    5.6    2.4
    6.4    3.1    5.5    1.8
    6    3    4.8    1.8
    6.9    3.1    5.4    2.1
    6.7    3.1    5.6    2.4
    6.9    3.1    5.1    2.3
    5.8    2.7    5.1    1.9
    6.8    3.2    5.9    2.3
    6.7    3.3    5.7    2.5
    6.7    3    5.2    2.3
    6.3    2.5    5    1.9
    6.5    3    5.2    2
    6.2    3.4    5.4    2.3
    5.9    3    5.1    1.8
    View Code

    2.matlab源程序

    function label_1=My_FCM(K)
    %输入K:聚类数
    %输出:label_1:聚的类, para_miu_new:模糊聚类中心μ,responsivity:模糊隶属度
    format long
    eps=1e-5;  %定义迭代终止条件的eps
    alpha=2;  %模糊加权指数,[1,+无穷)
    max_iter=100;  %最大迭代次数
    fitness=zeros(max_iter,1);
    data=dlmread('E:www.cnblogs.comkailugajidatairisiris_data.txt');
    %----------------------------------------------------------------------------------------------------
    %对data做最大-最小归一化处理
    [data_num,~]=size(data);
    X=(data-ones(data_num,1)*min(data))./(ones(data_num,1)*(max(data)-min(data)));
    [X_num,X_dim]=size(X);
    %----------------------------------------------------------------------------------------------------
    %随机初始化模糊隶属度矩阵
    responsivity=rand(X_num,K);  %初始化模糊隶属度矩阵,X_num*K
    temp=sum(responsivity,2);  %把responsivity每一行加起来,把K类加起来,N*1的矩阵
    responsivity=responsivity./(temp*ones(1,K));  %保证每行(每类)加起来为1
    % ----------------------------------------------------------------------------------------------------
    % FCM算法
    for t=1:max_iter
        %更新聚类中心K*X_dim
        miu_up=(responsivity'.^(alpha))*X;  %μ的分子部分
        para_miu=miu_up./((sum(responsivity.^(alpha)))'*ones(1,X_dim));
        %欧氏距离,计算(X-para_miu)^2=X^2+para_miu^2-2*para_miu*X',矩阵大小为X_num*K
        distant=(sum(X.*X,2))*ones(1,K)+ones(X_num,1)*(sum(para_miu.*para_miu,2))'-2*X*para_miu';
        %目标函数值
        fitness(t)=sum(sum(distant.*(responsivity.^(alpha))));
        %更新隶属度矩阵X_num*K
        R_up=distant.^(-1/(alpha-1));  %隶属度矩阵的分子部分
        responsivity=R_up./(sum(R_up,2)*ones(1,K));
        %[responsivity,para_miu,fitness(t)]=FuzzyCM(X,responsivity,K,alpha);
        if t>1  %改成while不行
            if abs(fitness(t)-fitness(t-1))<eps
                break;
            end
        end
    end
    %iter=t;  %实际迭代次数
    [~,label_1]=max(responsivity,[],2);

    3.结果

    >> label_1=My_FCM(3)
    
    label_1 =
    
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         1
         2
         3
         2
         3
         3
         3
         2
         3
         3
         3
         3
         3
         3
         3
         3
         3
         3
         3
         3
         3
         3
         3
         3
         3
         3
         3
         3
         2
         3
         3
         3
         3
         3
         3
         3
         3
         2
         3
         3
         3
         3
         3
         3
         3
         3
         3
         3
         3
         3
         3
         2
         3
         2
         2
         2
         2
         3
         2
         2
         2
         2
         2
         2
         3
         2
         2
         2
         2
         2
         3
         2
         3
         2
         3
         2
         2
         3
         2
         2
         2
         2
         2
         2
         3
         3
         2
         2
         2
         3
         2
         2
         2
         3
         2
         2
         2
         2
         2
         2
         3

    4.注意

        由于初始化模糊隶属度矩阵是随机的,所以每次出现的结果并不一样,如果答案与上述不一致,很正常,可以设置迭代次数,求精度。如有不对之处,望指正。

  • 相关阅读:
    perl6检测网站CMS脚本(测试代码)
    perl6 struct2-045 EXP
    perl6 单线程破解phpmyadmin脚本
    perl6 登录phpmyadmin
    PHP反序列化漏洞学习
    PHP对象5: define / const /static
    PHP对象4: final 不允许重写方法或不允许继承类
    ISCC之misc复现-High起来!
    宁波市第二届CTF之cripto1
    宁波市第二届CTF部分WP之msc1,msc2
  • 原文地址:https://www.cnblogs.com/kailugaji/p/9920705.html
Copyright © 2011-2022 走看看