加载中…
个人资料
古月星毅
古月星毅
  • 博客等级:
  • 博客积分:0
  • 博客访问:17,028
  • 关注人气:3
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
博文
(2008-06-06 16:05)
标签:

校园

1.其实HK算法思想很朴实,就是在最小均方误差准则下求得权矢量。

他相对于感知器算法的优点在于,他适用于线性可分和非线性可分得情况,对于线性可分的情况,给出最优权矢量,对于非线性可分得情况,能够判别出来,以退出迭代过程。

2.在程序编制过程中,我所受的最大困扰是:关于收敛条件的判决。

对于误差矢量:e=x*w-b

若e>0 则继续迭代

若e=0 则停止迭代,得到权矢量

若e〈0 则停止迭代,样本是非线性可分得,

若e有的分量大于0,有的分量小于0 ,则在各分量都变成零,或者停止由负值转变成正值时,停机。

3.在程序编制中的注意点:

1)关于0的判断,由于计算机的精度原因,严格等于零是很不容易的,而且在很多情况下也没有必要,则只要在0的一个可以接受的delta域内就可接受为零

2)关于判断,迭代前后,变量是否发生变化

在判断时,显然也不能直接判断a(i)==a(i+1)

而应该|a(i)-a(i+1)|〈err

 

4. HK详细代码如下:

unction [w,flag]=HK(data)
Iteration=20;
flag=0;
% [n,p]=size(data);
n=size(data,1);
b=ones(

标签:

校园

分类: 学习总结

事件:用GUI做K-Means聚类算法

目的:试图将每次迭代过程中各类的类心在listbox 中显示

以前的思维:在VB或VC中都可以很方便的用add方法

现状:Matlab中不支持这样的处理方式,matlab的思维是对于每一个unicontrol通过get,set来获得和设置相应的属性,当然在获取过程中要牵涉到句柄,这个很简单,不值得一说。

我首先查看了Listbox的所有属性,理所当然地会用string属性,关键是怎么更改属性,我最初的想法是将要显示的内容存放在一个字符数组里,为了不覆盖前面的内容,我这样做:

for ...

centerstr=[];

centerstr=[centerstr,newcontext];

set(handles.center_listbox,'string',centerstr);

end

但一般有一个问题很难预料到,就是centerstr和newcontext的维数匹配问题,我就是受这个问题所困扰。

显然,类心得坐标是double型的,在为数值型时,保留到小数点后面4位,但在num2str后之后,他把double型最后的零扔掉了,这就造成centerstr和newcontext的维数不匹配。我起初想到用if 语句来判断,谁的维数低了我把他补零,但在迭代过程中,这种现象是随机的,所以我费了很大力气,还是

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有