如何在 matlab 中使用 FCM 输出每个集群的数据?
[center,U,obj_fcn] = fcm(data,cluster_n)
如何在 matlab 中使用 FCM 输出每个集群的数据?
[center,U,obj_fcn] = fcm(data,cluster_n)
我使用U
向量来确定每个数据点属于哪个类。它的内容可以被认为是每个类属于一个类的概率(注意所有列的总和为 1),因此选择哪个类最有可能是一种合理的方法。这是通过存储的第二个输出参数来完成的max()
。
下面我已经说明了一些您可以使用的通用代码。
%# Start parameters and variables
nClasses = 3;
CM = jet(nClasses); %# Colormap for visualization of up to 255 classes
%# Create dataset
data = [mvnrnd([0 0],eye(2),100); mvnrnd([3,3],0.5*eye(2),50)];
%# Cluster
[center,U,obj_fcn] = fcm(data,nClasses);
%# Extract class assignment
[~,y] = max(U);
%# Visualize
f1=figure(1);clf
plot(data(:,1),data(:,2),'.k')
hold on
for i = 1 : nClasses
plot(data(y==i,1),data(y==i,2),'o','color',CM(i,:));
end
编辑:
要将一个类的数据点提取到一个新变量中,只需使用
class1data = data(y==1,:);
我的数据集包含 4 个属性的 900 行。现在我在每个属性中将它聚集在 9 个集群中。我将如何在 matlab 中编写代码,以便显示每个集群中的所有数据?现在我只得到 center,U, obj_func。
我得到的数据是让我计算标准偏差。所以我需要每个集群中的所有内容。