聚类之isodata算法

近期上课学习了isodata的迭代自组织数据分析算法,该算法是一个动态的聚类算法,与K-均值算法有相似之处,即聚类中心同样是通过样本均值的迭代运算来决定的,但不同k-均值算法的是,isodata算法是可以通过计算的中间过程,对聚类中心的数量进行调整。对一个算法,要想真正的了解,是能够在学习完该算法的基础上,能够自主地编写,在编写过程中你会发现在学习过程中的很多不足。因此,尽管网上已经有了成熟的isodata算法程序,楼主还是不才,自己编写程序进行该算法的学习。该算法主要参照了蔡元龙老师的《模式识别》一书,程序是用matlab编写。该算法写的比较急,必然会出现一些不足,请大家能够多多指出,共同进步。

首先,是对一系列参数的初始化,能力有限,所以在代码中pars.L中的参数必须是1,即一次迭代运算中可以合并的聚类中心的最多对数最多是1,这一点会及时更新。

%programed by Lu Qi,my email:qqlu1992@gmail.com
clear all
clc
% train_x=[0 0;0 1;1 0;1 1;7 7;8 8;9 9;8 7;8 9];
 load data_train
%参数的初始化
%step one
[pars.num_train,pars.length]=size(train_x);%num_train代表样本的数量,length代表样本的维数
pars.num_initial_cluster=5;
pars.num_cluster=pars.num_initial_cluster;
initial=randperm(pars.num_train);
pars.iter_max=20;
initial_point=initial(1:pars.num_initial_cluster);
pars.z{1}=train_x(initial_point,:); %第一次初始聚类中心
clear initial initial_point
pars.K=5;
pars.k=1;   %k代表分裂处理时的加减
pars.sita_N=3;   %每一聚类域中最少的样本数目,如少于此数就不作为一个独立的聚类
pars.sita_S=1;   %聚类域中样本距离分布的标准差
pars.sita_C=1;   %两聚类中心之间的最小距离,如小于此数,两个聚类进行合并
pars.L=1;        %一次迭代运算中可以合并的聚类中心的最多对数
pars.iter=1;
接着,是通过上一次的聚类中心进行归类并更新各聚类中心值及类内和类间的平均距离。

for iter=1:pars.iter_max
    for i
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ISODATA聚类算法是一种在负荷曲线聚类领域中应用的算法,在Matlab中也有相应的实现。它是对经典的ISODATA聚类算法进行改进的,主要解决了K-means算法需要事先确定聚类数目的问题。ISODATA算法新增了合并和分裂这两个操作,并引入了很多参数。相比于K-means算法ISODATA算法的优点在于可以动态调整聚类数目,有效解决了事先无法确定聚类数目的问题。 具体而言,L-ISODATA聚类算法是将ISODATA算法应用在负荷曲线聚类领域中,并对ISODATA聚类算法进行了改进。该算法解决了随机选取初始聚类中心可能导致算法收敛较慢、效果较差的问题,同时还可以捕捉到负荷曲线中的高维特征。 如果你想了解更多关于ISODATA聚类算法在Matlab中的实现,可以参考相关的参考文献或者搜索相关的Matlab代码、数据、文章讲解。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【风光场景生成】基于改进ISODATA的负荷曲线聚类算法(Matlab代码实现)](https://blog.csdn.net/Ke_Yan_She/article/details/129634340)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值