0

matlab で FCM を使用して各クラスターからデータを出力するにはどうすればよいですか?

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

2 に答える 2

1

ベクトルを使用して、U各データポイントが属するクラスを決定しました。その内容は、各クラスがクラスに属する確率と考えることができるため(すべての列の合計が1になることに注意してください)、最も可能性の高いクラスを選択することは合理的なアプローチです。これは、の2番目の出力引数を格納することによって行われます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

ここに画像の説明を入力してください

編集:

1つのクラスのデータポイントを新しい変数に抽出するには、次を使用します。

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 に答える