zoukankan      html  css  js  c++  java
  • MATLAB实例:聚类网络连接图

    MATLAB实例:聚类网络连接图

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

        本文给出一个简单实例,先生成2维高斯数据,得到数据之后,用模糊C均值(FCM)算法对数据进行聚类,得到聚类中心,然后绘制每一类数据到聚类中心的网络连接图。

    1. 程序

    generate_data.m

    function data=generate_data()
    %前两列是数据,最后一列是类标签
    %%
    %数据规模
    N=100;
    %混合比例
    para_pi=[0.33, 0.33, 0.34];
    %第一类数据
    mul=[0 -1]; % 均值
    S1=[1 0;0 1]; % 协方差
    data1=mvnrnd(mul, S1, para_pi(1)*N); % 产生高斯分布数据
    %第二类数据
    mu2=[2 2];
    S2=[1 0;0 1];
    data2=mvnrnd(mu2,S2,para_pi(2)*N);
    %第三类数据
    mu3=[-2 2];
    S3=[1 0;0 1];
    data3=mvnrnd(mu3,S3,para_pi(3)*N);
    %显示数据
    plot(data1(:,1),data1(:, 2),'b.');
    hold on;
    plot(data2(:,1),data2(:,2),'r.');
    plot(data3(:,1),data3(:,2),'g.');
    data = [data1, ones(para_pi(1)*N,1); data2, 2*ones(para_pi(2)*N,1); data3, 3*ones(para_pi(3)*N,1)];

    plot_fcm_2D.m

    function plot_fcm_2D(data, K)
    [center,U] = fcm(data,K);
    index=cell(K, 1);
    for k=1:K
        index{k}=find(U(k,:)==max(U));
        plot(data(index{k},1),data(index{k},2),'ro');
        hold on;
    end
    plot((center(:, 1)),(center(:, 2)),'*', 'MarkerSize',10,'color','k');
    for k=1:K
        for i=1:length(index{k})
            line([data(index{k}(i),1),center(k,1)],[data(index{k}(i),2),center(k,2)],'LineWidth',0.8,'Color','b'); 
        end
    end

    demo_fcm.m

    data=generate_data();
    data=data(:, 1:2);
    K=3;
    plot_fcm_2D(data, K);
    string=['demo_figure_', num2str(K), '.jpg'];
    saveas(gcf,sprintf(string),'bmp'); %保存图片

    2. 结果

    K=2

    K=3

    K=4

  • 相关阅读:
    修改图片大小 分辨率
    Tools
    写log
    4Sum
    3Sum Closest
    避免调试时加载符号
    SDN期末作业——负载均衡
    SDN第五次上机作业
    个人作业——软件工程实践总结作业
    SDN第四次作业
  • 原文地址:https://www.cnblogs.com/kailugaji/p/12492514.html
Copyright © 2011-2022 走看看