傅里叶学徒 2021-09-17 14:22 采纳率: 100%
浏览 107
已结题

MATLAB进行单个属性的FCM聚类,用Xie-Beni进行选择最佳聚类数,运行后停不下来了。

clc;
clear all;
close all;
%导入数据

Input=load('C:\nasa93.txt');%一个93*18的数据集,前面17个是属性,我要对每个属性的93个数据进行FCM聚类并通过Xie-Beni指标选择最佳的聚类数
Data=Input(:,1);
%对特征mode进行聚类
C=3;
%定义距离、划分矩阵
[N,S]=size(Data);
Dist(C,N)=0; U(C,N)=0; P(C,S)=0;
% 初始化随机矩阵
m = C; % m行
n = N; % n列
U0 = rand(m, n);

% 矩阵处理
for irow = 1:m
U0(:, irow) = U0(:, irow)/sum(U0(:,irow));
end
disp(U0);

while true

%更新聚类中心

Um=U0.^2;
P=sum(UmData,2)./sum(Um,2);
%更新划分矩阵
for i=1:C
for j=1:N
Dist(i,j)=fuzzydist(Data(j,:),P(i,:));
end
end
U=1./(Dist.^2.
(ones(C,1)*sum(Dist.^(-2))));

 %目标函数:基于隶属度的聚类损失函数
 Obj_Fcn=sum(sum(Um.*Dist.^2));
 %Xie-Beni聚类有效指标
 for s=1:C-1
     for t=s+1:C  
 V_xb=(sum(sum(Um.*Dist.^2)))/(N*min((P(t,:)-P(s,:)).^2));
     end
 end
         
       if norm(U-U0,Inf)<1.0000e-6
           break
        end
U0=U;   

end

  • 写回答

1条回答 默认 最新

  • 技术专家团-Joel 2021-09-17 14:32
    关注

    同学,你把聚类退出条件改宽松一点,不要弄那么小

    norm(U-U0,Inf)<1.0000e-6
    

    1.0000e-6弄大一点,比如1e-2试一试,不然很难满足这个条件,进入死循环

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月25日
  • 已采纳回答 9月17日
  • 创建了问题 9月17日

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器