MATLAB实例:聚类网络连接图
作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/
本文给出一个简单实例,先生成2维高斯数据,得到数据之后,用模糊C均值(FCM)算法对数据进行聚类,得到聚类中心,然后绘制每一类数据到聚类中心的网络连接图。
1. 程序
generate_data.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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
1 2 3 4 5 6 | 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
分类:
MATLAB作图
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析