在学习模糊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',