isodata算法 matlab,matlab实现isodata算法

%==================isodata算法的matla实现代码======================= %=========================主程序部分================================ function isodata(X,K,theta_N,theta_S0,theta_C0,L0,I)

%输入样本X 每一列为一个样本

%输入预期的聚类数目K

%输入每一聚类样本域的最小数目theta_N

%输入同一聚类域中样本距离分布的标准差theta_S

%输入两个聚类中心的最小距离theta_C

%输入一次迭代运算中可以合并的聚类中心的最多对数L

%输入迭代运算的次数I

global n N Nc z w theta_S

theta_C L theta_S=theta_S0;

theta_C=theta_C0;

L=L0;

[n,N]=size(X);

Nc=K;

z=X(:,1:Nc);

w=zeros(1,N); %w存储每一个元素的类别

iteration=1; %循环次数控制

flag=1;

while flag==1

for i=1:N

w(i)=classification(z,X(:,i));

end %判断是否需取消某些类

i=1;

while i<=Nc

di=find(w==i);

if length(di)z_temp=z;

z(:,i)=[];

for j=1:length(di)

w(di(j))=classification(z,z_temp(:,di(j)));

end

Nc=Nc-1;

i=i-1;

end

i=i+1;

end

%更新分类中心的值

for i=1:Nc

di=find(w==i);

z(:,i)=sum(X(:,di),2)/length(di);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值