设为首页 收藏本站
查看: 2046|回复: 0

[经验分享] perl聚类

[复制链接]

尚未签到

发表于 2015-12-27 10:33:18 | 显示全部楼层 |阅读模式

  • @12@vip.com#20120307/1
  • BCDBCDBD
  • +
  • AAAAAAAA
  • @18@vip.com#20120307/1
  • BBDACCDA
  • +
  • AAAAAAAA
  • @13@vip.com#20120307/1
  • BCDBCDAA
  • +
  • AAAAAAAA
  • @14@vip.com#20120307/1
  • BCDAAABC
  • +
  • AAAAAAAA
  • @15@vip.com#20120307/1
  • BCDCCABC
  • +
  • AAAAAAAA
  • @16@vip.com#20120307/1
  • BCDBBABC
  • +
  • AAAAAAAA
  • @12@vip.com#20120307/1
  • BBDABBDA
  • +
  • AAAAAAAA
  • ...

我想对上面的数据进行一个聚类,每四行是一段,假设每段第二行前三个字符相同,且后五个字符差异度(对应位置不同,比如BC和BB差异度为1,BC和AB差异度为2)相近的归为一段、类,(计算出所有的差异度,选取差异度最大的那段为第一凝聚点,再在第一凝聚点距离D(D=2d)之外寻找第二凝聚点,依此类推,直到遍历所有为止)  每类之间空行隔开,生成下面这样的结果:



  • BBD BBD BBDACCDA BBDABBDA


  • BCD BCD BCDBCDBD BCDBCDAA


  • BCD BCD BCDAAABC BCDBBABC
  • BCD BCD BCDAAABC BCDCCABC
  ————————————————————————————————————————————
    比如:
1、BCDAAABC 2、BCDBBABC 3、BCDCCABC 4、BCDBCDBD 5、BCDBCDAA
五个字符串,1和2的差异度是2;1和3的差异度是2;1和4的差异度是4;1和5的差异度是5;2和3的差异度是2;2和4的差异度是3;2和5的差异度是4;3和4的差异度是3;3和5的差异度是4;4和5的差异度是2;
那么:
   1 2 3 4 5
1 0 2 2 4 5
2    0 2 3 4
3       0 3 4
4          0 2
5             0
那么2的频率是最多的,所有差异度为2的归为一类,所以1、2;1、3;4、5;归为一类;所有的都有归类了,就结束。如果还没有结束,再选下一个,也就是4,所有差异度为4的归为一类。。直到所有的归为一类。。。


—————————————————————————————————————————————————






1 #!/usr/bin/perl
2 my ( $A, $B ) = ( 3, 5 );
3 my ( @A, %G );
4
5 while (<>) {
6     chomp( my $L = <> );
7     push @A, $L; <>, <>;
8 }
9
10 for my $i ( 0 .. $#A - 1 ) {
11     for my $j ( $i + 1 .. $#A ) {
12         next if substr( $A[$i], 0, $A ) ne substr( $A[$j], 0, $A );
13         my $dif;
14         substr( $A[$i], $_, 1 ) ne substr( $A[$j], $_, 1 ) and $dif++
15           for $A .. $A + $B - 1;
16         push @{ $G{$dif} }, [ $i, $j ];
17     }
18 }
19
20 for my $v ( sort { @$b <=> @$a } values %G ) {
21     for my $ij (@$v) {
22         my @H = map substr( $A[$_], 0, $A ), @$ij;
23         print join( "\t", @H, @A[@$ij] ), $/;
24     }
25     print $/;
26 }
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-156864-1-1.html 上篇帖子: [Perl] Data::Dumper模块的用法简介 下篇帖子: perl模块之File::Util
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表