0

如何在 matlab 中使用 FCM 输出每个集群的数据?

[center,U,obj_fcn] = fcm(data,cluster_n) 
4

2 回答 2

1

我使用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,:);
于 2012-07-18T18:23:23.837 回答
-4

我的数据集包含 4 个属性的 900 行。现在我在每个属性中将它聚集在 9 个集群中。我将如何在 matlab 中编写代码,以便显示每个集群中的所有数据?现在我只得到 center,U, obj_func。

我得到的数据是让我计算标准偏差。所以我需要每个集群中的所有内容。

于 2014-05-25T05:00:29.787 回答