matlab で FCM を使用して各クラスターからデータを出力するにはどうすればよいですか?
[center,U,obj_fcn] = fcm(data,cluster_n)
matlab で FCM を使用して各クラスターからデータを出力するにはどうすればよいですか?
[center,U,obj_fcn] = fcm(data,cluster_n)
ベクトルを使用して、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,:);
私のデータセットには、4 つの属性を持つ 900 行が含まれています。ここで、各属性の 9 つのクラスターにクラスター化します。すべてのクラスターのすべてのデータが表示されるように、matlab でコーディングするにはどうすればよいですか? 現在、center、U、obj_func のみを取得しています。
私が取得したデータは、標準偏差を計算するためのものです。したがって、すべてのクラスターにすべてが必要です。