作业帮 > 综合 > 作业

在matlab中做模糊C均值聚类(fcm)算法如何体现初始隶属度?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/15 10:50:28
在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列.
  即一列中从上到下表示每个样本隶属与每一类的隶属度.
  然后在算法中不断迭代,
  最后得到的还是如此大的一个矩阵,代表每个样本隶属与每一类的隶属度
  然后选择最大的那个就是,它就属于那一类.