canopy杂记

表述方式一:  

(1)设样本集合为S,确定两个阈值t1和t2,且t1>t2。

(2)任取一个样本点p属于S,作为一个Canopy,记为C,从S中移除p。

(3)计算S中所有点到p的距离dist。

(4)若dist<t1,则将相应点归到C,作为弱关联。

(5)检查所有dist,若dist<t2,则将相应点归到C并移出S,作为强关联。

(6)重复(2)~(5),直至S为空。

表述方式二:

(1)设样本集合为list,……

(2)取样本list的head作为p,作为一个canopy.记为C,从list中去除。

(3)任意选择点p,计算点p到每个canopy的距离dist。

(4)若 dist<T1 ,标记为弱标记;若 dist<T2 ,标记为强标记,并从list中删除。

(5)若p的标记没有发生变化且不是null, 或者dist>=T1,则将p作为一个新的canopy, 并从list中删除。

(6)若,则将p作为一个新的canopy, 并从list中删除。

(7)循环(3)~(6),至list为空。

附代码:

@@while ( list != null)
{
p=list.head;//or p=list.random(); Maybe the second is better! 
centerlist.add(p);
list.del(p);
temp=list.head;
while( temp++ != list.end)
{
  dist=distance(p,temp);
  if ( dist < t1 ) p.sign=weaksign;
  if ( dist < t2 ) { p.sign=sign; list.del(p); }
}
}

 @@ p=list.head;
while ( list != null )
{  
  if( centerlist == null )  
    {
      centerlist.add(p);
      list.del(p);
      p++;
      continue;
     }
  node=centerlist.head;
  oldsign=p.sign;
  while( certerlist.tail != node )  
  {
     dist=distance(node,p);
     if( dist<T2 ) { p.sign=node.sign; list.del(p); }
     else if( dist<T1 )  { p.sign=node.weaksign; }
     node=node+sizeof(Node node);
   }
  if( dist>T1 || (oldsign == p.sign && p.sign != null )) { centerlist.add(p); list.del(p); } 
  if ( null == ++p ) p=list.head;
}

          

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值