欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab 泡泡图,使用matlab绘制2维、3维气泡图

发布时间:2023/12/10 循环神经网络 58 豆豆
生活随笔 收集整理的这篇文章主要介绍了 matlab 泡泡图,使用matlab绘制2维、3维气泡图 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

在学习模糊c均值聚类时,突然想到能否将每个样本对所属簇的奴属度(C)用气泡图的形式表示出来,这样就可以在一张图上同时获得分类与奴属度(C)两类信息。在matlab中没有绘制气泡图的专用函数,不过可以通过手动设置参数,来最终达到气泡图的效果。以下是实现代码。

二维气泡图的绘制

% 这个脚本用来对模糊c均值聚类生成二维气泡图

clc

clear

%% 获得模糊c均值聚类的结果数据

load fcmdata.dat

[centers,U] = fcm(fcmdata,2); % 返回聚类中心信息以及每个数据点奴属与各聚类中心的值

index1 = find(U(1,:)==max(U));% 使用find()函数找到属于第一个聚类中心的元素序号

index2 = find(U(2,:)==max(U));% 获得属于第二个聚类中心的元素序号

%% 绘制二维bubble图

figure

weight = normalize(max(U),'range')*600; % 一种扩大一组数据之间差距的方法,否则气泡效果不明显

weight(weight==0)=(1/20)*mean(weight);% 粗略将0值转化为1/20的均值(这是估计出来的)

% 绘制第一个簇的气泡图

for i=1:length(index1)

scatter(fcmdata(index1(i),1),fcmdata(index1(i),2),weight(index1(i)),...

'MarkerEdgeColor','k','MarkerEdgeAlpha',0,'MarkerFaceColor','r',...

'MarkerFaceAlpha',0.3);

hold on % 别忘了这句,要不然总是一个点

end

% 绘制第二个簇的气泡图

for i=1:length(index2)

scatter(fcmdata(index2(i),1),fcmdata(index2(i),2),weight(index2(i)),...

'MarkerEdgeColor','k','MarkerEdgeAlpha',0,'MarkerFaceColor','b',...

'MarkerFaceAlpha',0.3);

hold on % 别忘了这句,要不然总是一个点

end

plot(centers(:,1),centers(:,2),'xk','markersize',10,'linewidth',3);

hold off

最终绘制效果如下图所示:

气泡的大小代表每个样本的奴属度(C)但可以看出大部分气泡大小差距不大,只有在两分类交界处出现奴属度较小的气泡,这是符合实施规律的。事实上,图中气泡的大小差距是经过放大处理的,若不经历此步操作,气泡的大小是差不多的。

三维气泡图的绘制

原理同二维气泡图一样,直接上代码。

% 使用这个脚本创建三维气泡图

clc

clear

%% 数据集的创建

rng default; % For reproducibility

X = [randn(20,3)*0.75+ones(20,3);randn(20,3)*0.5-ones(20,3)]; % 创建20个样本的二分类数据集

%% 进行模糊c均值聚类

Numclust = 2;

[centers,U] = fcm(X,Numclust);

index1 = find(U(1,:)==max(U)); % 获取簇1的标号

index2 = find(U(2,:)==max(U)); % 获取簇2的标号

weight = normalize(max(U),'range')*800; % 获取气泡权重

weight(weight==0) = (1/20)*mean(weight); % 调好看一点

%% 绘制3维气泡图

figure

for i = 1:length(index1)

scatter3(X(index1(i),1),X(index1(i),2),X(index1(i),3),weight(index1(i)),...

'MarkerEdgeColor','k','MarkerEdgeAlpha',0,'MarkerFaceColor','r',...

'MarkerFaceAlpha',0.3);

hold on

end

for i = 1:length(index2)

scatter3(X(index2(i),1),X(index2(i),2),X(index2(i),3),weight(index2(i)),...

'MarkerEdgeColor','k','MarkerEdgeAlpha',0,'MarkerFaceColor','b',...

'MarkerFaceAlpha',0.3);

hold on

end

plot3(centers(:,1),centers(:,2),centers(:,3),'xk','markersize',10,'linewidth',3);

hold off

最终绘制效果图如下图所示:

后续

冷静下来想了想,将c值以气泡图形式表示出来似乎有点画蛇添足,不过作为日常编程练习还是有帮助的。matlab入门小白,欢迎大家多多指教!

总结

以上是生活随笔为你收集整理的matlab 泡泡图,使用matlab绘制2维、3维气泡图的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。