在matlab中做模糊C均值聚类(fcm)算法如何体现初始隶属度?如题
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/08 16:48:32
在matlab中做模糊C均值聚类(fcm)算法如何体现初始隶属度?如题
在matlab中做模糊C均值聚类(fcm)算法如何体现初始隶属度?
如题
在matlab中做模糊C均值聚类(fcm)算法如何体现初始隶属度?如题
我贴部分FCM的Matlab代码:
expo = options(1); % Exponent for U
max_iter = options(2); % Max.iteration
min_impro = options(3); % Min.improvement
display = options(4); % Display info or not
obj_fcn = zeros(max_iter,1); % Array for objective function
U = initfcm(cluster_n,data_n); % Initial fuzzy partition
% Main loop
for i = 1:max_iter,
[U,center,obj_fcn(i)] = stepfcm(data,U,cluster_n,expo);
if display,
fprintf('Iteration count = %d,obj.fcn = %f\n',i,obj_fcn(i));
end
% check termination condition
if i > 1,
if abs(obj_fcn(i) - obj_fcn(i-1)) < min_impro,break; end,
end
end
其中
U = initfcm(cluster_n,data_n); % Initial fuzzy partition
这个就是初始化划分矩阵,随机产生一个隶属度矩阵,
代码如下:
U = rand(cluster_n,data_n);
col_sum = sum(U);
U = U./col_sum(ones(cluster_n,1),:);
上面就是它初始化的一个隶属度矩阵,
cluster_n行,data_n列.
即一列中从上到下表示每个样本隶属与每一类的隶属度.
然后在算法中不断迭代,
最后得到的还是如此大的一个矩阵,代表每个样本隶属与每一类的隶属度
然后选择最大的那个就是,它就属于那一类.