机器学习之AdaBoost原理与代码实现

                                   AdaBoost原理与代码实现

                                       本文系作者原创,转载请注明出处: https://www.cnblogs.com/further-further-further/p/9642899.html 

基本思路

Adaboost体现的是“三个臭皮匠,胜过一个诸葛亮”,它是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),

然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。训练过程如下(参考Andy的机器学习--浅析Adaboost算法,他说得非常形象,贴切。)

       机器学习之AdaBoost原理与代码实现_第1张图片

简单的来说:图中的y1(x),y2(x)....ym(x)都是弱分类器(顾名思义,弱分类器就是分类能力很弱,仅比随机分类好一点点的分类器)
步骤:
1.  初始化了弱分类器 
2.  对  进行迭代处理产生了分类器 
3.  对   迭代处理产生了 ......
4.  依次迭代最后产生弱分类器 
5.  将m个分类器加权处理,得到一个强处理器
 

关键问题

1.  每一轮遍历如何改变数据的权值或概率分布?

2.  如何将多个弱分类器组合成一个强分类器?

对于这两个问题的解答,就是下面介绍的Adaboost原理

AdaBoost原理

AdaBoos流程

AdaBoost(adaptive boosting)的运行过程如下:训练数据中的每个样本,并赋予其一个权重,这些权重构成了向量D。一开始,

这些权重都初始化成相等值。首先在训练数据上训练出一个弱分类器并计算该分类器的错误率,然后在同一数据集上再次训练

弱分类器。在分类器的第二次训练中,将会重新调整每个样本的权重,其中第一次分对的样本的权重会降低,而第一次分错的样本

权重将会提高。为了从所有弱分类器中得到最终的分类结果,Adaboost为每个分类器都分配了一个权重alpha,这些alpha值是基于

每个弱分类器的错误率计算的。其中,错误率  的定义为:

        

而alpha的计算公式如下:

      

D的计算方法如下(始终把握一个原则:正确分类时权重要降低,错误分类时权重要升高,权重升高意味着提升关注度,需要重点优化):

如果某个样本被正确分类,那么该样本的权重更改为:

         

而如果某个样本被错分,那么该样本的权重更改为:

          

在计算出D之后,AdaBoost又开始进入下一轮迭代。AdaBoost算法会不断地重复训练和调整权重的过程,直到训练错误率为0或者分类器的数目达到用户

的指定值为止。

AdaBoost算法原理

假设我们的训练样本是

训练集的在第k个弱学习器的输出权重为

由于多元分类是二元分类的推广,这里假设我们是二元分类问题,输出为{-1,1},则第k个弱分类器Gk(x)在训练集上的加权误差率为:

看弱学习器权重系数,对于二元分类问题,第k个弱分类器Gk(x)的权重系数为:

更新更新样本权重D。假设第k个弱分类器的样本集权重系数为 ,则对应的第k+1个弱分类器的样本集权重系数为:

 是规范化因子,它使  成为一个概率分布。

集合策略,Adaboost分类采用的是加权求和法,最终的强分类器为

代码实现

输入数据

这里同样是使用一个训练数据文件 horseColicTraining2.txt 和一个测试数据文件 horseColicTest2.txt

horseColicTraining2.txt

  1 2.000000    1.000000    38.500000    66.000000    28.000000    3.000000    3.000000    0.000000    2.000000    5.000000    4.000000    4.000000    0.000000    0.000000    0.000000    3.000000    5.000000    45.000000    8.400000    0.000000    0.000000    -1.000000
  2 1.000000    1.000000    39.200000    88.000000    20.000000    0.000000    0.000000    4.000000    1.000000    3.000000    4.000000    2.000000    0.000000    0.000000    0.000000    4.000000    2.000000    50.000000    85.000000    2.000000    2.000000    -1.000000
  3 2.000000    1.000000    38.300000    40.000000    24.000000    1.000000    1.000000    3.000000    1.000000    3.000000    3.000000    1.000000    0.000000    0.000000    0.000000    1.000000    1.000000    33.000000    6.700000    0.000000    0.000000    1.000000
  4 1.000000    9.000000    39.100000    164.000000    84.000000    4.000000    1.000000    6.000000    2.000000    2.000000    4.000000    4.000000    1.000000    2.000000    5.000000    3.000000    0.000000    48.000000    7.200000    3.000000    5.300000    -1.000000
  5 2.000000    1.000000    37.300000    104.000000    35.000000    0.000000    0.000000    6.000000    2.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    74.000000    7.400000    0.000000    0.000000    -1.000000
  6 2.000000    1.000000    0.000000    0.000000    0.000000    2.000000    1.000000    3.000000    1.000000    2.000000    3.000000    2.000000    2.000000    1.000000    0.000000    3.000000    3.000000    0.000000    0.000000    0.000000    0.000000    1.000000
  7 1.000000    1.000000    37.900000    48.000000    16.000000    1.000000    1.000000    1.000000    1.000000    3.000000    3.000000    3.000000    1.000000    1.000000    0.000000    3.000000    5.000000    37.000000    7.000000    0.000000    0.000000    1.000000
  8 1.000000    1.000000    0.000000    60.000000    0.000000    3.000000    0.000000    0.000000    1.000000    0.000000    4.000000    2.000000    2.000000    1.000000    0.000000    3.000000    4.000000    44.000000    8.300000    0.000000    0.000000    -1.000000
  9 2.000000    1.000000    0.000000    80.000000    36.000000    3.000000    4.000000    3.000000    1.000000    4.000000    4.000000    4.000000    2.000000    1.000000    0.000000    3.000000    5.000000    38.000000    6.200000    0.000000    0.000000    -1.000000
 10 2.000000    9.000000    38.300000    90.000000    0.000000    1.000000    0.000000    1.000000    1.000000    5.000000    3.000000    1.000000    2.000000    1.000000    0.000000    3.000000    0.000000    40.000000    6.200000    1.000000    2.200000    1.000000
 11 1.000000    1.000000    38.100000    66.000000    12.000000    3.000000    3.000000    5.000000    1.000000    3.000000    3.000000    1.000000    2.000000    1.000000    3.000000    2.000000    5.000000    44.000000    6.000000    2.000000    3.600000    1.000000
 12 2.000000    1.000000    39.100000    72.000000    52.000000    2.000000    0.000000    2.000000    1.000000    2.000000    1.000000    2.000000    1.000000    1.000000    0.000000    4.000000    4.000000    50.000000    7.800000    0.000000    0.000000    1.000000
 13 1.000000    1.000000    37.200000    42.000000    12.000000    2.000000    1.000000    1.000000    1.000000    3.000000    3.000000    3.000000    3.000000    1.000000    0.000000    4.000000    5.000000    0.000000    7.000000    0.000000    0.000000    1.000000
 14 2.000000    9.000000    38.000000    92.000000    28.000000    1.000000    1.000000    2.000000    1.000000    1.000000    3.000000    2.000000    3.000000    0.000000    7.200000    1.000000    1.000000    37.000000    6.100000    1.000000    0.000000    -1.000000
 15 1.000000    1.000000    38.200000    76.000000    28.000000    3.000000    1.000000    1.000000    1.000000    3.000000    4.000000    1.000000    2.000000    2.000000    0.000000    4.000000    4.000000    46.000000    81.000000    1.000000    2.000000    1.000000
 16 1.000000    1.000000    37.600000    96.000000    48.000000    3.000000    1.000000    4.000000    1.000000    5.000000    3.000000    3.000000    2.000000    3.000000    4.500000    4.000000    0.000000    45.000000    6.800000    0.000000    0.000000    -1.000000
 17 1.000000    9.000000    0.000000    128.000000    36.000000    3.000000    3.000000    4.000000    2.000000    4.000000    4.000000    3.000000    3.000000    0.000000    0.000000    4.000000    5.000000    53.000000    7.800000    3.000000    4.700000    -1.000000
 18 2.000000    1.000000    37.500000    48.000000    24.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.000000
 19 1.000000    1.000000    37.600000    64.000000    21.000000    1.000000    1.000000    2.000000    1.000000    2.000000    3.000000    1.000000    1.000000    1.000000    0.000000    2.000000    5.000000    40.000000    7.000000    1.000000    0.000000    1.000000
 20 2.000000    1.000000    39.400000    110.000000    35.000000    4.000000    3.000000    6.000000    0.000000    0.000000    3.000000    3.000000    0.000000    0.000000    0.000000    0.000000    0.000000    55.000000    8.700000    0.000000    0.000000    1.000000
 21 1.000000    1.000000    39.900000    72.000000    60.000000    1.000000    1.000000    5.000000    2.000000    5.000000    4.000000    4.000000    3.000000    1.000000    0.000000    4.000000    4.000000    46.000000    6.100000    2.000000    0.000000    1.000000
 22 2.000000    1.000000    38.400000    48.000000    16.000000    1.000000    0.000000    1.000000    1.000000    1.000000    3.000000    1.000000    2.000000    3.000000    5.500000    4.000000    3.000000    49.000000    6.800000    0.000000    0.000000    1.000000
 23 1.000000    1.000000    38.600000    42.000000    34.000000    2.000000    1.000000    4.000000    0.000000    2.000000    3.000000    1.000000    0.000000    0.000000    0.000000    1.000000    0.000000    48.000000    7.200000    0.000000    0.000000    1.000000
 24 1.000000    9.000000    38.300000    130.000000    60.000000    0.000000    3.000000    0.000000    1.000000    2.000000    4.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    50.000000    70.000000    0.000000    0.000000    1.000000
 25 1.000000    1.000000    38.100000    60.000000    12.000000    3.000000    3.000000    3.000000    1.000000    0.000000    4.000000    3.000000    3.000000    2.000000    2.000000    0.000000    0.000000    51.000000    65.000000    0.000000    0.000000    1.000000
 26 2.000000    1.000000    37.800000    60.000000    42.000000    0.000000    0.000000    0.000000    1.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.000000
 27 1.000000    1.000000    38.300000    72.000000    30.000000    4.000000    3.000000    3.000000    2.000000    3.000000    3.000000    3.000000    2.000000    1.000000    0.000000    3.000000    5.000000    43.000000    7.000000    2.000000    3.900000    1.000000
 28 1.000000    1.000000    37.800000    48.000000    12.000000    3.000000    1.000000    1.000000    1.000000    0.000000    3.000000    2.000000    1.000000    1.000000    0.000000    1.000000    3.000000    37.000000    5.500000    2.000000    1.300000    1.000000
 29 1.000000    1.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    -1.000000
 30 2.000000    1.000000    37.700000    48.000000    0.000000    2.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    0.000000    0.000000    0.000000    45.000000    76.000000    0.000000    0.000000    1.000000
 31 2.000000    1.000000    37.700000    96.000000    30.000000    3.000000    3.000000    4.000000    2.000000    5.000000    4.000000    4.000000    3.000000    2.000000    4.000000    4.000000    5.000000    66.000000    7.500000    0.000000    0.000000    -1.000000
 32 2.000000    1.000000    37.200000    108.000000    12.000000    3.000000    3.000000    4.000000    2.000000    2.000000    4.000000    2.000000    0.000000    3.000000    6.000000    3.000000    3.000000    52.000000    8.200000    3.000000    7.400000    -1.000000
 33 1.000000    1.000000    37.200000    60.000000    0.000000    2.000000    1.000000    1.000000    1.000000    3.000000    3.000000    3.000000    2.000000    1.000000    0.000000    4.000000    5.000000    43.000000    6.600000    0.000000    0.000000    1.000000
 34 1.000000    1.000000    38.200000    64.000000    28.000000    1.000000    1.000000    1.000000    1.000000    3.000000    1.000000    0.000000    0.000000    0.000000    0.000000    4.000000    4.000000    49.000000    8.600000    2.000000    6.600000    1.000000
 35 1.000000    1.000000    0.000000    100.000000    30.000000    3.000000    3.000000    4.000000    2.000000    5.000000    4.000000    4.000000    3.000000    3.000000    0.000000    4.000000    4.000000    52.000000    6.600000    0.000000    0.000000    1.000000
 36 2.000000    1.000000    0.000000    104.000000    24.000000    4.000000    3.000000    3.000000    2.000000    4.000000    4.000000    3.000000    0.000000    3.000000    0.000000    0.000000    2.000000    73.000000    8.400000    0.000000    0.000000    -1.000000
 37 2.000000    1.000000    38.300000    112.000000    16.000000    0.000000    3.000000    5.000000    2.000000    0.000000    0.000000    1.000000    1.000000    2.000000    0.000000    0.000000    5.000000    51.000000    6.000000    2.000000    1.000000    -1.000000
 38 1.000000    1.000000    37.800000    72.000000    0.000000    0.000000    3.000000    0.000000    1.000000    5.000000    3.000000    1.000000    0.000000    1.000000    0.000000    1.000000    1.000000    56.000000    80.000000    1.000000    2.000000    1.000000
 39 2.000000    1.000000    38.600000    52.000000    0.000000    1.000000    1.000000    1.000000    1.000000    3.000000    3.000000    2.000000    1.000000    1.000000    0.000000    1.000000    3.000000    32.000000    6.600000    1.000000    5.000000    1.000000
 40 1.000000    9.000000    39.200000    146.000000    96.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    -1.000000
 41 1.000000    1.000000    0.000000    88.000000    0.000000    3.000000    3.000000    6.000000    2.000000    5.000000    3.000000    3.000000    1.000000    3.000000    0.000000    4.000000    5.000000    63.000000    6.500000    3.000000    0.000000    -1.000000
 42 2.000000    9.000000    39.000000    150.000000    72.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    47.000000    8.500000    0.000000    0.100000    1.000000
 43 2.000000    1.000000    38.000000    60.000000    12.000000    3.000000    1.000000    3.000000    1.000000    3.000000    3.000000    1.000000    1.000000    1.000000    0.000000    2.000000    2.000000    47.000000    7.000000    0.000000    0.000000    1.000000
 44 1.000000    1.000000    0.000000    120.000000    0.000000    3.000000    4.000000    4.000000    1.000000    4.000000    4.000000    4.000000    1.000000    1.000000    0.000000    0.000000    5.000000    52.000000    67.000000    2.000000    2.000000    -1.000000
 45 1.000000    1.000000    35.400000    140.000000    24.000000    3.000000    3.000000    4.000000    2.000000    4.000000    4.000000    0.000000    2.000000    1.000000    0.000000    0.000000    5.000000    57.000000    69.000000    3.000000    2.000000    -1.000000
 46 2.000000    1.000000    0.000000    120.000000    0.000000    4.000000    3.000000    4.000000    2.000000    5.000000    4.000000    4.000000    1.000000    1.000000    0.000000    4.000000    5.000000    60.000000    6.500000    3.000000    0.000000    -1.000000
 47 1.000000    1.000000    37.900000    60.000000    15.000000    3.000000    0.000000    4.000000    2.000000    5.000000    4.000000    4.000000    2.000000    2.000000    0.000000    4.000000    5.000000    65.000000    7.500000    0.000000    0.000000    1.000000
 48 2.000000    1.000000    37.500000    48.000000    16.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    0.000000    1.000000    0.000000    37.000000    6.500000    0.000000    0.000000    1.000000
 49 1.000000    1.000000    38.900000    80.000000    44.000000    3.000000    3.000000    3.000000    2.000000    2.000000    3.000000    3.000000    2.000000    2.000000    7.000000    3.000000    1.000000    54.000000    6.500000    3.000000    0.000000    -1.000000
 50 2.000000    1.000000    37.200000    84.000000    48.000000    3.000000    3.000000    5.000000    2.000000    4.000000    1.000000    2.000000    1.000000    2.000000    0.000000    2.000000    1.000000    73.000000    5.500000    2.000000    4.100000    -1.000000
 51 2.000000    1.000000    38.600000    46.000000    0.000000    1.000000    1.000000    2.000000    1.000000    1.000000    3.000000    2.000000    1.000000    1.000000    0.000000    0.000000    2.000000    49.000000    9.100000    1.000000    1.600000    1.000000
 52 1.000000    1.000000    37.400000    84.000000    36.000000    1.000000    0.000000    3.000000    2.000000    3.000000    3.000000    2.000000    0.000000    0.000000    0.000000    4.000000    5.000000    0.000000    0.000000    3.000000    0.000000    -1.000000
 53 2.000000    1.000000    0.000000    0.000000    0.000000    1.000000    1.000000    3.000000    1.000000    1.000000    3.000000    1.000000    0.000000    0.000000    0.000000    2.000000    2.000000    43.000000    7.700000    0.000000    0.000000    1.000000
 54 2.000000    1.000000    38.600000    40.000000    20.000000    0.000000    0.000000    0.000000    1.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    41.000000    6.400000    0.000000    0.000000    1.000000
 55 2.000000    1.000000    40.300000    114.000000    36.000000    3.000000    3.000000    1.000000    2.000000    2.000000    3.000000    3.000000    2.000000    1.000000    7.000000    1.000000    5.000000    57.000000    8.100000    3.000000    4.500000    -1.000000
 56 1.000000    9.000000    38.600000    160.000000    20.000000    3.000000    0.000000    5.000000    1.000000    3.000000    3.000000    4.000000    3.000000    0.000000    0.000000    4.000000    0.000000    38.000000    0.000000    2.000000    0.000000    -1.000000
 57 1.000000    1.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    24.000000    6.700000    0.000000    0.000000    1.000000
 58 1.000000    1.000000    0.000000    64.000000    36.000000    2.000000    0.000000    2.000000    1.000000    5.000000    3.000000    3.000000    2.000000    2.000000    0.000000    0.000000    0.000000    42.000000    7.700000    0.000000    0.000000    -1.000000
 59 1.000000    1.000000    0.000000    0.000000    20.000000    4.000000    3.000000    3.000000    0.000000    5.000000    4.000000    3.000000    2.000000    0.000000    0.000000    4.000000    4.000000    53.000000    5.900000    3.000000    0.000000    -1.000000
 60 2.000000    1.000000    0.000000    96.000000    0.000000    3.000000    3.000000    3.000000    2.000000    5.000000    4.000000    4.000000    1.000000    2.000000    0.000000    4.000000    5.000000    60.000000    0.000000    0.000000    0.000000    -1.000000
 61 2.000000    1.000000    37.800000    48.000000    32.000000    1.000000    1.000000    3.000000    1.000000    2.000000    1.000000    0.000000    1.000000    1.000000    0.000000    4.000000    5.000000    37.000000    6.700000    0.000000    0.000000    1.000000
 62 2.000000    1.000000    38.500000    60.000000    0.000000    2.000000    2.000000    1.000000    1.000000    1.000000    2.000000    2.000000    2.000000    1.000000    0.000000    1.000000    1.000000    44.000000    7.700000    0.000000    0.000000    1.000000
 63 1.000000    1.000000    37.800000    88.000000    22.000000    2.000000    1.000000    2.000000    1.000000    3.000000    0.000000    0.000000    2.000000    0.000000    0.000000    4.000000    0.000000    64.000000    8.000000    1.000000    6.000000    -1.000000
 64 2.000000    1.000000    38.200000    130.000000    16.000000    4.000000    3.000000    4.000000    2.000000    2.000000    4.000000    4.000000    1.000000    1.000000    0.000000    0.000000    0.000000    65.000000    82.000000    2.000000    2.000000    -1.000000
 65 1.000000    1.000000    39.000000    64.000000    36.000000    3.000000    1.000000    4.000000    2.000000    3.000000    3.000000    2.000000    1.000000    2.000000    7.000000    4.000000    5.000000    44.000000    7.500000    3.000000    5.000000    1.000000
 66 1.000000    1.000000    0.000000    60.000000    36.000000    3.000000    1.000000    3.000000    1.000000    3.000000    3.000000    2.000000    1.000000    1.000000    0.000000    3.000000    4.000000    26.000000    72.000000    2.000000    1.000000    1.000000
 67 2.000000    1.000000    37.900000    72.000000    0.000000    1.000000    1.000000    5.000000    2.000000    3.000000    3.000000    1.000000    1.000000    3.000000    2.000000    3.000000    4.000000    58.000000    74.000000    1.000000    2.000000    1.000000
 68 2.000000    1.000000    38.400000    54.000000    24.000000    1.000000    1.000000    1.000000    1.000000    1.000000    3.000000    1.000000    2.000000    1.000000    0.000000    3.000000    2.000000    49.000000    7.200000    1.000000    0.000000    1.000000
 69 2.000000    1.000000    0.000000    52.000000    16.000000    1.000000    0.000000    3.000000    1.000000    0.000000    0.000000    0.000000    2.000000    3.000000    5.500000    0.000000    0.000000    55.000000    7.200000    0.000000    0.000000    1.000000
 70 2.000000    1.000000    38.000000    48.000000    12.000000    1.000000    1.000000    1.000000    1.000000    1.000000    3.000000    0.000000    1.000000    1.000000    0.000000    3.000000    2.000000    42.000000    6.300000    2.000000    4.100000    1.000000
 71 2.000000    1.000000    37.000000    60.000000    20.000000    3.000000    0.000000    0.000000    1.000000    3.000000    0.000000    3.000000    2.000000    2.000000    4.500000    4.000000    4.000000    43.000000    7.600000    0.000000    0.000000    -1.000000
 72 1.000000    1.000000    37.800000    48.000000    28.000000    1.000000    1.000000    1.000000    1.000000    1.000000    2.000000    1.000000    2.000000    0.000000    0.000000    1.000000    1.000000    46.000000    5.900000    2.000000    7.000000    1.000000
 73 1.000000    1.000000    37.700000    56.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    -1.000000
 74 1.000000    1.000000    38.100000    52.000000    24.000000    1.000000    1.000000    5.000000    1.000000    4.000000    3.000000    1.000000    2.000000    3.000000    7.000000    1.000000    0.000000    54.000000    7.500000    2.000000    2.600000    -1.000000
 75 1.000000    9.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    37.000000    4.900000    0.000000    0.000000    -1.000000
 76 1.000000    9.000000    39.700000    100.000000    0.000000    3.000000    3.000000    5.000000    2.000000    2.000000    3.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    48.000000    57.000000    2.000000    2.000000    -1.000000
 77 1.000000    1.000000    37.600000    38.000000    20.000000    3.000000    3.000000    1.000000    1.000000    3.000000    3.000000    2.000000    0.000000    0.000000    0.000000    3.000000    0.000000    37.000000    68.000000    0.000000    0.000000    1.000000
 78 2.000000    1.000000    38.700000    52.000000    20.000000    2.000000    0.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    0.000000    1.000000    1.000000    33.000000    77.000000    0.000000    0.000000    1.000000
 79 1.000000    1.000000    0.000000    0.000000    0.000000    3.000000    3.000000    3.000000    3.000000    5.000000    3.000000    3.000000    3.000000    2.000000    0.000000    4.000000    5.000000    46.000000    5.900000    0.000000    0.000000    -1.000000
 80 1.000000    1.000000    37.500000    96.000000    18.000000    1.000000    3.000000    6.000000    2.000000    3.000000    4.000000    2.000000    2.000000    3.000000    5.000000    0.000000    4.000000    69.000000    8.900000    3.000000    0.000000    1.000000
 81 1.000000    1.000000    36.400000    98.000000    35.000000    3.000000    3.000000    4.000000    1.000000    4.000000    3.000000    2.000000    0.000000    0.000000    0.000000    4.000000    4.000000    47.000000    6.400000    3.000000    3.600000    -1.000000
 82 1.000000    1.000000    37.300000    40.000000    0.000000    0.000000    3.000000    1.000000    1.000000    2.000000    3.000000    2.000000    3.000000    1.000000    0.000000    3.000000    5.000000    36.000000    0.000000    3.000000    2.000000    1.000000
 83 1.000000    9.000000    38.100000    100.000000    80.000000    3.000000    1.000000    2.000000    1.000000    3.000000    4.000000    1.000000    0.000000    0.000000    0.000000    1.000000    0.000000    36.000000    5.700000    0.000000    0.000000    1.000000
 84 1.000000    1.000000    38.000000    0.000000    24.000000    3.000000    3.000000    6.000000    2.000000    5.000000    0.000000    4.000000    1.000000    1.000000    0.000000    0.000000    0.000000    68.000000    7.800000    0.000000    0.000000    -1.000000
 85 1.000000    1.000000    37.800000    60.000000    80.000000    1.000000    3.000000    2.000000    2.000000    2.000000    3.000000    3.000000    0.000000    2.000000    5.500000    4.000000    0.000000    40.000000    4.500000    2.000000    0.000000    1.000000
 86 2.000000    1.000000    38.000000    54.000000    30.000000    2.000000    3.000000    3.000000    3.000000    3.000000    1.000000    2.000000    2.000000    2.000000    0.000000    0.000000    4.000000    45.000000    6.200000    0.000000    0.000000    1.000000
 87 1.000000    1.000000    0.000000    88.000000    40.000000    3.000000    3.000000    4.000000    2.000000    5.000000    4.000000    3.000000    3.000000    0.000000    0.000000    4.000000    5.000000    50.000000    7.700000    3.000000    1.400000    -1.000000
 88 2.000000    1.000000    0.000000    40.000000    16.000000    0.000000    0.000000    0.000000    1.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    50.000000    7.000000    2.000000    3.900000    -1.000000
 89 2.000000    1.000000    39.000000    64.000000    40.000000    1.000000    1.000000    5.000000    1.000000    3.000000    3.000000    2.000000    2.000000    1.000000    0.000000    3.000000    3.000000    42.000000    7.500000    2.000000    2.300000    1.000000
 90 2.000000    1.000000    38.300000    42.000000    10.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    0.000000    0.000000    0.000000    0.000000    0.000000    38.000000    61.000000    0.000000    0.000000    1.000000
 91 2.000000    1.000000    38.000000    52.000000    16.000000    0.000000    0.000000    0.000000    0.000000    2.000000    0.000000    0.000000    0.000000    3.000000    1.000000    1.000000    1.000000    53.000000    86.000000    0.000000    0.000000    1.000000
 92 2.000000    1.000000    40.300000    114.000000    36.000000    3.000000    3.000000    1.000000    2.000000    2.000000    3.000000    3.000000    2.000000    1.000000    7.000000    1.000000    5.000000    57.000000    8.100000    3.000000    4.500000    -1.000000
 93 2.000000    1.000000    38.800000    50.000000    20.000000    3.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    2.000000    1.000000    0.000000    3.000000    1.000000    42.000000    6.200000    0.000000    0.000000    1.000000
 94 2.000000    1.000000    0.000000    0.000000    0.000000    3.000000    3.000000    1.000000    1.000000    5.000000    3.000000    3.000000    1.000000    1.000000    0.000000    4.000000    5.000000    38.000000    6.500000    0.000000    0.000000    -1.000000
 95 2.000000    1.000000    37.500000    48.000000    30.000000    4.000000    1.000000    3.000000    1.000000    0.000000    2.000000    1.000000    1.000000    1.000000    0.000000    1.000000    1.000000    48.000000    8.600000    0.000000    0.000000    1.000000
 96 1.000000    1.000000    37.300000    48.000000    20.000000    0.000000    1.000000    2.000000    1.000000    3.000000    3.000000    3.000000    2.000000    1.000000    0.000000    3.000000    5.000000    41.000000    69.000000    0.000000    0.000000    1.000000
 97 2.000000    1.000000    0.000000    84.000000    36.000000    0.000000    0.000000    3.000000    1.000000    0.000000    3.000000    1.000000    2.000000    1.000000    0.000000    3.000000    2.000000    44.000000    8.500000    0.000000    0.000000    1.000000
 98 1.000000    1.000000    38.100000    88.000000    32.000000    3.000000    3.000000    4.000000    1.000000    2.000000    3.000000    3.000000    0.000000    3.000000    1.000000    4.000000    5.000000    55.000000    60.000000    0.000000    0.000000    -1.000000
 99 2.000000    1.000000    37.700000    44.000000    40.000000    2.000000    1.000000    3.000000    1.000000    1.000000    3.000000    2.000000    1.000000    1.000000    0.000000    1.000000    5.000000    41.000000    60.000000    0.000000    0.000000    1.000000
100 2.000000    1.000000    39.600000    108.000000    51.000000    3.000000    3.000000    6.000000    2.000000    2.000000    4.000000    3.000000    1.000000    2.000000    0.000000    3.000000    5.000000    59.000000    8.000000    2.000000    2.600000    1.000000
101 1.000000    1.000000    38.200000    40.000000    16.000000    3.000000    3.000000    1.000000    1.000000    1.000000    3.000000    0.000000    0.000000    0.000000    0.000000    1.000000    1.000000    34.000000    66.000000    0.000000    0.000000    1.000000
102 1.000000    1.000000    0.000000    60.000000    20.000000    4.000000    3.000000    4.000000    2.000000    5.000000    4.000000    0.000000    0.000000    1.000000    0.000000    4.000000    5.000000    0.000000    0.000000    0.000000    0.000000    -1.000000
103 2.000000    1.000000    38.300000    40.000000    16.000000    3.000000    0.000000    1.000000    1.000000    2.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    37.000000    57.000000    0.000000    0.000000    1.000000
104 1.000000    9.000000    38.000000    140.000000    68.000000    1.000000    1.000000    1.000000    1.000000    3.000000    3.000000    2.000000    0.000000    0.000000    0.000000    2.000000    1.000000    39.000000    5.300000    0.000000    0.000000    1.000000
105 1.000000    1.000000    37.800000    52.000000    24.000000    1.000000    3.000000    3.000000    1.000000    4.000000    4.000000    1.000000    2.000000    3.000000    5.700000    2.000000    5.000000    48.000000    6.600000    1.000000    3.700000    -1.000000
106 1.000000    1.000000    0.000000    70.000000    36.000000    1.000000    0.000000    3.000000    2.000000    2.000000    3.000000    2.000000    2.000000    0.000000    0.000000    4.000000    5.000000    36.000000    7.300000    0.000000    0.000000    1.000000
107 1.000000    1.000000    38.300000    52.000000    96.000000    0.000000    3.000000    3.000000    1.000000    0.000000    0.000000    0.000000    1.000000    1.000000    0.000000    1.000000    0.000000    43.000000    6.100000    0.000000    0.000000    1.000000
108 2.000000    1.000000    37.300000    50.000000    32.000000    1.000000    1.000000    3.000000    1.000000    1.000000    3.000000    2.000000    0.000000    0.000000    0.000000    1.000000    0.000000    44.000000    7.000000    0.000000    0.000000    1.000000
109 1.000000    1.000000    38.700000    60.000000    32.000000    4.000000    3.000000    2.000000    2.000000    4.000000    4.000000    4.000000    0.000000    0.000000    0.000000    4.000000    5.000000    53.000000    64.000000    3.000000    2.000000    -1.000000
110 1.000000    9.000000    38.400000    84.000000    40.000000    3.000000    3.000000    2.000000    1.000000    3.000000    3.000000    3.000000    1.000000    1.000000    0.000000    0.000000    0.000000    36.000000    6.600000    2.000000    2.800000    -1.000000
111 1.000000    1.000000    0.000000    70.000000    16.000000    3.000000    4.000000    5.000000    2.000000    2.000000    3.000000    2.000000    2.000000    1.000000    0.000000    4.000000    5.000000    60.000000    7.500000    0.000000    0.000000    -1.000000
112 1.000000    1.000000    38.300000    40.000000    16.000000    3.000000    0.000000    0.000000    1.000000    1.000000    3.000000    2.000000    0.000000    0.000000    0.000000    0.000000    0.000000    38.000000    58.000000    1.000000    2.000000    1.000000
113 1.000000    1.000000    0.000000    40.000000    0.000000    2.000000    1.000000    1.000000    1.000000    1.000000    3.000000    1.000000    1.000000    1.000000    0.000000    0.000000    5.000000    39.000000    56.000000    0.000000    0.000000    1.000000
114 1.000000    1.000000    36.800000    60.000000    28.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    10.000000    -1.000000
115 1.000000    1.000000    38.400000    44.000000    24.000000    3.000000    0.000000    4.000000    0.000000    5.000000    4.000000    3.000000    2.000000    1.000000    0.000000    4.000000    5.000000    50.000000    77.000000    0.000000    0.000000    1.000000
116 2.000000    1.000000    0.000000    0.000000    40.000000    3.000000    1.000000    1.000000    1.000000    3.000000    3.000000    2.000000    0.000000    0.000000    0.000000    0.000000    0.000000    45.000000    70.000000    0.000000    0.000000    1.000000
117 1.000000    1.000000    38.000000    44.000000    12.000000    1.000000    1.000000    1.000000    1.000000    3.000000    3.000000    3.000000    2.000000    1.000000    0.000000    4.000000    5.000000    42.000000    65.000000    0.000000    0.000000    1.000000
118 2.000000    1.000000    39.500000    0.000000    0.000000    3.000000    3.000000    4.000000    2.000000    3.000000    4.000000    3.000000    0.000000    3.000000    5.500000    4.000000    5.000000    0.000000    6.700000    1.000000    0.000000    -1.000000
119 1.000000    1.000000    36.500000    78.000000    30.000000    1.000000    0.000000    1.000000    1.000000    5.000000    3.000000    1.000000    0.000000    1.000000    0.000000    0.000000    0.000000    34.000000    75.000000    2.000000    1.000000    1.000000
120 2.000000    1.000000    38.100000    56.000000    20.000000    2.000000    1.000000    2.000000    1.000000    1.000000    3.000000    1.000000    1.000000    1.000000    0.000000    0.000000    0.000000    46.000000    70.000000    0.000000    0.000000    1.000000
121 1.000000    1.000000    39.400000    54.000000    66.000000    1.000000    1.000000    2.000000    1.000000    2.000000    3.000000    2.000000    1.000000    1.000000    0.000000    3.000000    4.000000    39.000000    6.000000    2.000000    0.000000    1.000000
122 1.000000    1.000000    38.300000    80.000000    40.000000    0.000000    0.000000    6.000000    2.000000    4.000000    3.000000    1.000000    0.000000    2.000000    0.000000    1.000000    4.000000    67.000000    10.200000    2.000000    1.000000    -1.000000
123 2.000000    1.000000    38.700000    40.000000    28.000000    2.000000    1.000000    1.000000    1.000000    3.000000    1.000000    1.000000    0.000000    0.000000    0.000000    1.000000    0.000000    39.000000    62.000000    1.000000    1.000000    1.000000
124 1.000000    1.000000    38.200000    64.000000    24.000000    1.000000    1.000000    3.000000    1.000000    4.000000    4.000000    3.000000    2.000000    1.000000    0.000000    4.000000    4.000000    45.000000    7.500000    1.000000    2.000000    -1.000000
125 2.000000    1.000000    37.600000    48.000000    20.000000    3.000000    1.000000    4.000000    1.000000    1.000000    1.000000    3.000000    2.000000    1.000000    0.000000    1.000000    1.000000    37.000000    5.500000    0.000000    0.000000    -1.000000
126 1.000000    1.000000    38.000000    42.000000    68.000000    4.000000    1.000000    1.000000    1.000000    3.000000    3.000000    2.000000    2.000000    2.000000    0.000000    4.000000    4.000000    41.000000    7.600000    0.000000    0.000000    1.000000
127 1.000000    1.000000    38.700000    0.000000    0.000000    3.000000    1.000000    3.000000    1.000000    5.000000    4.000000    2.000000    0.000000    0.000000    0.000000    0.000000    0.000000    33.000000    6.500000    2.000000    0.000000    1.000000
128 1.000000    1.000000    37.400000    50.000000    32.000000    3.000000    3.000000    0.000000    1.000000    4.000000    4.000000    1.000000    2.000000    1.000000    0.000000    1.000000    0.000000    45.000000    7.900000    2.000000    1.000000    1.000000
129 1.000000    1.000000    37.400000    84.000000    20.000000    0.000000    0.000000    3.000000    1.000000    2.000000    3.000000    3.000000    0.000000    0.000000    0.000000    0.000000    0.000000    31.000000    61.000000    0.000000    1.000000    -1.000000
130 1.000000    1.000000    38.400000    49.000000    0.000000    0.000000    0.000000    1.000000    1.000000    0.000000    0.000000    1.000000    2.000000    1.000000    0.000000    0.000000    0.000000    44.000000    7.600000    0.000000    0.000000    1.000000
131 1.000000    1.000000    37.800000    30.000000    12.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    -1.000000
132 2.000000    1.000000    37.600000    88.000000    36.000000    3.000000    1.000000    1.000000    1.000000    3.000000    3.000000    2.000000    1.000000    3.000000    1.500000    0.000000    0.000000    44.000000    6.000000    0.000000    0.000000    -1.000000
133 2.000000    1.000000    37.900000    40.000000    24.000000    1.000000    1.000000    1.000000    1.000000    2.000000    3.000000    1.000000    0.000000    0.000000    0.000000    0.000000    3.000000    40.000000    5.700000    0.000000    0.000000    1.000000
134 1.000000    1.000000    0.000000    100.000000    0.000000    3.000000    0.000000    4.000000    2.000000    5.000000    4.000000    0.000000    2.000000    0.000000    0.000000    2.000000    0.000000    59.000000    6.300000    0.000000    0.000000    -1.000000
135 1.000000    9.000000    38.100000    136.000000    48.000000    3.000000    3.000000    3.000000    1.000000    5.000000    1.000000    3.000000    2.000000    2.000000    4.400000    2.000000    0.000000    33.000000    4.900000    2.000000    2.900000    -1.000000
136 1.000000    1.000000    0.000000    0.000000    0.000000    3.000000    3.000000    3.000000    2.000000    5.000000    3.000000    3.000000    3.000000    2.000000    0.000000    4.000000    5.000000    46.000000    5.900000    0.000000    0.000000    -1.000000
137 1.000000    1.000000    38.000000    48.000000    0.000000    1.000000    1.000000    1.000000    1.000000    1.000000    2.000000    4.000000    2.000000    2.000000    0.000000    4.000000    5.000000    0.000000    0.000000    0.000000    0.000000    1.000000
138 2.000000    1.000000    38.000000    56.000000    0.000000    1.000000    2.000000    3.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    0.000000    1.000000    1.000000    42.000000    71.000000    0.000000    0.000000    1.000000
139 2.000000    1.000000    38.000000    60.000000    32.000000    1.000000    1.000000    0.000000    1.000000    3.000000    3.000000    0.000000    1.000000    1.000000    0.000000    0.000000    0.000000    50.000000    7.000000    1.000000    1.000000    1.000000
140 1.000000    1.000000    38.100000    44.000000    9.000000    3.000000    1.000000    1.000000    1.000000    2.000000    2.000000    1.000000    1.000000    1.000000    0.000000    4.000000    5.000000    31.000000    7.300000    0.000000    0.000000    1.000000
141 2.000000    1.000000    36.000000    42.000000    30.000000    0.000000    0.000000    5.000000    1.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    64.000000    6.800000    0.000000    0.000000    -1.000000
142 1.000000    1.000000    0.000000    120.000000    0.000000    4.000000    3.000000    6.000000    2.000000    5.000000    4.000000    4.000000    0.000000    0.000000    0.000000    4.000000    5.000000    57.000000    4.500000    3.000000    3.900000    -1.000000
143 1.000000    1.000000    37.800000    48.000000    28.000000    1.000000    1.000000    1.000000    2.000000    1.000000    2.000000    1.000000    2.000000    0.000000    0.000000    1.000000    1.000000    46.000000    5.900000    2.000000    7.000000    1.000000
144 1.000000    1.000000    37.100000    84.000000    40.000000    3.000000    3.000000    6.000000    1.000000    2.000000    4.000000    4.000000    3.000000    2.000000    2.000000    4.000000    5.000000    75.000000    81.000000    0.000000    0.000000    -1.000000
145 2.000000    1.000000    0.000000    80.000000    32.000000    3.000000    3.000000    2.000000    1.000000    2.000000    3.000000    3.000000    2.000000    1.000000    0.000000    3.000000    0.000000    50.000000    80.000000    0.000000    0.000000    1.000000
146 1.000000    1.000000    38.200000    48.000000    0.000000    1.000000    3.000000    3.000000    1.000000    3.000000    4.000000    4.000000    1.000000    3.000000    2.000000    4.000000    5.000000    42.000000    71.000000    0.000000    0.000000    1.000000
147 2.000000    1.000000    38.000000    44.000000    12.000000    2.000000    1.000000    3.000000    1.000000    3.000000    4.000000    3.000000    1.000000    2.000000    6.500000    1.000000    4.000000    33.000000    6.500000    0.000000    0.000000    -1.000000
148 1.000000    1.000000    38.300000    132.000000    0.000000    0.000000    3.000000    6.000000    2.000000    2.000000    4.000000    2.000000    2.000000    3.000000    6.200000    4.000000    4.000000    57.000000    8.000000    0.000000    5.200000    1.000000
149 2.000000    1.000000    38.700000    48.000000    24.000000    0.000000    0.000000    0.000000    0.000000    1.000000    1.000000    0.000000    1.000000    1.000000    0.000000    1.000000    0.000000    34.000000    63.000000    0.000000    0.000000    1.000000
150 2.000000    1.000000    38.900000    44.000000    14.000000    3.000000    1.000000    1.000000    1.000000    2.000000    3.000000    2.000000    0.000000    0.000000    0.000000    0.000000    2.000000    33.000000    64.000000    0.000000    0.000000    1.000000
151 1.000000    1.000000    39.300000    0.000000    0.000000    4.000000    3.000000    6.000000    2.000000    4.000000    4.000000    2.000000    1.000000    3.000000    4.000000    4.000000    4.000000    75.000000    0.000000    3.000000    4.300000    -1.000000
152 1.000000    1.000000    0.000000    100.000000    0.000000    3.000000    3.000000    4.000000    2.000000    0.000000    4.000000    4.000000    2.000000    1.000000    2.000000    0.000000    0.000000    68.000000    64.000000    3.000000    2.000000    1.000000
153 2.000000    1.000000    38.600000    48.000000    20.000000    3.000000    1.000000    1.000000    1.000000    1.000000    3.000000    2.000000    2.000000    1.000000    0.000000    3.000000    2.000000    50.000000    7.300000    1.000000    0.000000    1.000000
154 2.000000    1.000000    38.800000    48.000000    40.000000    1.000000    1.000000    3.000000    1.000000    3.000000    3.000000    4.000000    2.000000    0.000000    0.000000    0.000000    5.000000    41.000000    65.000000    0.000000    0.000000    1.000000
155 2.000000    1.000000    38.000000    48.000000    20.000000    3.000000    3.000000    4.000000    1.000000    1.000000    4.000000    2.000000    2.000000    0.000000    5.000000    0.000000    2.000000    49.000000    8.300000    1.000000    0.000000    1.000000
156 2.000000    1.000000    38.600000    52.000000    20.000000    1.000000    1.000000    1.000000    1.000000    3.000000    3.000000    2.000000    1.000000    1.000000    0.000000    1.000000    3.000000    36.000000    6.600000    1.000000    5.000000    1.000000
157 1.000000    1.000000    37.800000    60.000000    24.000000    1.000000    0.000000    3.000000    2.000000    0.000000    4.000000    4.000000    2.000000    3.000000    2.000000    0.000000    5.000000    52.000000    75.000000    0.000000    0.000000    -1.000000
158 2.000000    1.000000    38.000000    42.000000    40.000000    3.000000    1.000000    1.000000    1.000000    3.000000    3.000000    1.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.000000
159 2.000000    1.000000    0.000000    0.000000    12.000000    1.000000    1.000000    2.000000    1.000000    2.000000    1.000000    2.000000    3.000000    1.000000    0.000000    1.000000    3.000000    44.000000    7.500000    2.000000    0.000000    1.000000
160 1.000000    1.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.000000    0.000000    0.000000    1.000000    1.000000    0.000000    0.000000    5.000000    35.000000    58.000000    2.000000    1.000000    1.000000
161 1.000000    1.000000    38.300000    42.000000    24.000000    0.000000    0.000000    0.000000    1.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    40.000000    8.500000    0.000000    0.000000    -1.000000
162 2.000000    1.000000    39.500000    60.000000    10.000000    3.000000    0.000000    0.000000    2.000000    3.000000    3.000000    2.000000    2.000000    1.000000    0.000000    3.000000    0.000000    38.000000    56.000000    1.000000    0.000000    1.000000
163 1.000000    1.000000    38.000000    66.000000    20.000000    1.000000    3.000000    3.000000    1.000000    5.000000    3.000000    1.000000    1.000000    1.000000    0.000000    3.000000    0.000000    46.000000    46.000000    3.000000    2.000000    -1.000000
164 1.000000    1.000000    38.700000    76.000000    0.000000    1.000000    1.000000    5.000000    2.000000    3.000000    3.000000    2.000000    2.000000    2.000000    0.000000    4.000000    4.000000    50.000000    8.000000    0.000000    0.000000    1.000000
165 1.000000    1.000000    39.400000    120.000000    48.000000    0.000000    0.000000    5.000000    1.000000    0.000000    3.000000    3.000000    1.000000    0.000000    0.000000    4.000000    0.000000    56.000000    64.000000    1.000000    2.000000    -1.000000
166 1.000000    1.000000    38.300000    40.000000    18.000000    1.000000    1.000000    1.000000    1.000000    3.000000    1.000000    1.000000    0.000000    0.000000    0.000000    2.000000    1.000000    43.000000    5.900000    1.000000    0.000000    1.000000
167 2.000000    1.000000    0.000000    44.000000    24.000000    1.000000    1.000000    1.000000    1.000000    3.000000    3.000000    1.000000    2.000000    1.000000    0.000000    0.000000    1.000000    0.000000    6.300000    0.000000    0.000000    1.000000
168 1.000000    1.000000    38.400000    104.000000    40.000000    1.000000    1.000000    3.000000    1.000000    2.000000    4.000000    2.000000    2.000000    3.000000    6.500000    0.000000    4.000000    55.000000    8.500000    0.000000    0.000000    1.000000
169 1.000000    1.000000    0.000000    65.000000    24.000000    0.000000    0.000000    0.000000    2.000000    5.000000    0.000000    4.000000    3.000000    1.000000    0.000000    0.000000    5.000000    0.000000    0.000000    0.000000    0.000000    -1.000000
170 2.000000    1.000000    37.500000    44.000000    20.000000    1.000000    1.000000    3.000000    1.000000    0.000000    1.000000    1.000000    0.000000    0.000000    0.000000    1.000000    0.000000    35.000000    7.200000    0.000000    0.000000    1.000000
171 2.000000    1.000000    39.000000    86.000000    16.000000    3.000000    3.000000    5.000000    0.000000    3.000000    3.000000    3.000000    0.000000    2.000000    0.000000    0.000000    0.000000    68.000000    5.800000    3.000000    6.000000    -1.000000
172 1.000000    1.000000    38.500000    129.000000    48.000000    3.000000    3.000000    3.000000    1.000000    2.000000    4.000000    3.000000    1.000000    3.000000    2.000000    0.000000    0.000000    57.000000    66.000000    3.000000    2.000000    1.000000
173 1.000000    1.000000    0.000000    104.000000    0.000000    3.000000    3.000000    5.000000    2.000000    2.000000    4.000000    3.000000    0.000000    3.000000    0.000000    4.000000    4.000000    69.000000    8.600000    2.000000    3.400000    -1.000000
174 2.000000    1.000000    0.000000    0.000000    0.000000    3.000000    4.000000    6.000000    0.000000    4.000000    0.000000    4.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    -1.000000
175 1.000000    1.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.000000
176 1.000000    1.000000    38.200000    60.000000    30.000000    1.000000    1.000000    3.000000    1.000000    3.000000    3.000000    1.000000    2.000000    1.000000    0.000000    3.000000    2.000000    48.000000    66.000000    0.000000    0.000000    1.000000
177 1.000000    1.000000    0.000000    68.000000    14.000000    0.000000    0.000000    4.000000    1.000000    4.000000    0.000000    0.000000    0.000000    1.000000    4.300000    0.000000    0.000000    0.000000    0.000000    2.000000    2.800000    -1.000000
178 1.000000    1.000000    0.000000    60.000000    30.000000    3.000000    3.000000    4.000000    2.000000    5.000000    4.000000    4.000000    1.000000    1.000000    0.000000    4.000000    0.000000    45.000000    70.000000    3.000000    2.000000    1.000000
179 2.000000    1.000000    38.500000    100.000000    0.000000    3.000000    3.000000    5.000000    2.000000    4.000000    3.000000    4.000000    2.000000    1.000000    0.000000    4.000000    5.000000    0.000000    0.000000    0.000000    0.000000    -1.000000
180 1.000000    1.000000    38.400000    84.000000    30.000000    3.000000    1.000000    5.000000    2.000000    4.000000    3.000000    3.000000    2.000000    3.000000    6.500000    4.000000    4.000000    47.000000    7.500000    3.000000    0.000000    -1.000000
181 2.000000    1.000000    37.800000    48.000000    14.000000    0.000000    0.000000    1.000000    1.000000    3.000000    0.000000    2.000000    1.000000    3.000000    5.300000    1.000000    0.000000    35.000000    7.500000    0.000000    0.000000    1.000000
182 1.000000    1.000000    38.000000    0.000000    24.000000    3.000000    3.000000    6.000000    2.000000    5.000000    0.000000    4.000000    1.000000    1.000000    0.000000    0.000000    0.000000    68.000000    7.800000    0.000000    0.000000    -1.000000
183 2.000000    1.000000    37.800000    56.000000    16.000000    1.000000    1.000000    2.000000    1.000000    2.000000    1.000000    1.000000    2.000000    1.000000    0.000000    1.000000    0.000000    44.000000    68.000000    1.000000    1.000000    1.000000
184 2.000000    1.000000    38.200000    68.000000    32.000000    2.000000    2.000000    2.000000    1.000000    1.000000    1.000000    1.000000    3.000000    1.000000    0.000000    1.000000    1.000000    43.000000    65.000000    0.000000    0.000000    1.000000
185 1.000000    1.000000    38.500000    120.000000    60.000000    4.000000    3.000000    6.000000    2.000000    0.000000    3.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    54.000000    0.000000    0.000000    0.000000    1.000000
186 1.000000    1.000000    39.300000    64.000000    90.000000    2.000000    3.000000    1.000000    1.000000    0.000000    3.000000    1.000000    1.000000    2.000000    0.000000    0.000000    0.000000    39.000000    6.700000    0.000000    0.000000    1.000000
187 1.000000    1.000000    38.400000    80.000000    30.000000    4.000000    3.000000    1.000000    1.000000    3.000000    3.000000    3.000000    3.000000    3.000000    0.000000    4.000000    5.000000    32.000000    6.100000    3.000000    4.300000    1.000000
188 1.000000    1.000000    38.500000    60.000000    0.000000    1.000000    1.000000    0.000000    1.000000    0.000000    1.000000    1.000000    0.000000    0.000000    0.000000    0.000000    0.000000    33.000000    53.000000    1.000000    0.000000    1.000000
189 1.000000    1.000000    38.300000    60.000000    16.000000    3.000000    1.000000    1.000000    1.000000    2.000000    1.000000    1.000000    2.000000    2.000000    3.000000    1.000000    4.000000    30.000000    6.000000    1.000000    3.000000    1.000000
190 1.000000    1.000000    37.100000    40.000000    8.000000    0.000000    1.000000    4.000000    1.000000    3.000000    3.000000    1.000000    1.000000    1.000000    0.000000    3.000000    3.000000    23.000000    6.700000    3.000000    0.000000    1.000000
191 2.000000    9.000000    0.000000    100.000000    44.000000    2.000000    1.000000    1.000000    1.000000    4.000000    1.000000    1.000000    0.000000    0.000000    0.000000    1.000000    0.000000    37.000000    4.700000    0.000000    0.000000    1.000000
192 1.000000    1.000000    38.200000    48.000000    18.000000    1.000000    1.000000    1.000000    1.000000    3.000000    3.000000    3.000000    1.000000    2.000000    0.000000    4.000000    0.000000    48.000000    74.000000    1.000000    2.000000    1.000000
193 1.000000    1.000000    0.000000    60.000000    48.000000    3.000000    3.000000    4.000000    2.000000    4.000000    3.000000    4.000000    0.000000    0.000000    0.000000    0.000000    0.000000    58.000000    7.600000    0.000000    0.000000    -1.000000
194 2.000000    1.000000    37.900000    88.000000    24.000000    1.000000    1.000000    2.000000    1.000000    2.000000    2.000000    1.000000    0.000000    0.000000    0.000000    4.000000    1.000000    37.000000    56.000000    0.000000    0.000000    1.000000
195 2.000000    1.000000    38.000000    44.000000    12.000000    3.000000    1.000000    1.000000    0.000000    0.000000    1.000000    2.000000    0.000000    0.000000    0.000000    1.000000    0.000000    42.000000    64.000000    0.000000    0.000000    1.000000
196 2.000000    1.000000    38.500000    60.000000    20.000000    1.000000    1.000000    5.000000    2.000000    2.000000    2.000000    1.000000    2.000000    1.000000    0.000000    2.000000    3.000000    63.000000    7.500000    2.000000    2.300000    -1.000000
197 2.000000    1.000000    38.500000    96.000000    36.000000    3.000000    3.000000    0.000000    2.000000    2.000000    4.000000    2.000000    1.000000    2.000000    0.000000    4.000000    5.000000    70.000000    8.500000    0.000000    0.000000    -1.000000
198 2.000000    1.000000    38.300000    60.000000    20.000000    1.000000    1.000000    1.000000    2.000000    1.000000    3.000000    1.000000    0.000000    0.000000    0.000000    3.000000    0.000000    34.000000    66.000000    0.000000    0.000000    1.000000
199 2.000000    1.000000    38.500000    60.000000    40.000000    3.000000    1.000000    2.000000    1.000000    2.000000    1.000000    2.000000    0.000000    0.000000    0.000000    3.000000    2.000000    49.000000    59.000000    0.000000    0.000000    1.000000
200 1.000000    1.000000    37.300000    48.000000    12.000000    1.000000    0.000000    3.000000    1.000000    3.000000    1.000000    3.000000    2.000000    1.000000    0.000000    3.000000    3.000000    40.000000    6.600000    2.000000    0.000000    1.000000
201 1.000000    1.000000    38.500000    86.000000    0.000000    1.000000    1.000000    3.000000    1.000000    4.000000    4.000000    3.000000    2.000000    1.000000    0.000000    3.000000    5.000000    45.000000    7.400000    1.000000    3.400000    -1.000000
202 1.000000    1.000000    37.500000    48.000000    40.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.000000    1.000000    0.000000    0.000000    5.000000    41.000000    55.000000    3.000000    2.000000    -1.000000
203 2.000000    1.000000    37.200000    36.000000    9.000000    1.000000    1.000000    1.000000    1.000000    2.000000    3.000000    1.000000    2.000000    1.000000    0.000000    4.000000    1.000000    35.000000    5.700000    0.000000    0.000000    1.000000
204 1.000000    1.000000    39.200000    0.000000    23.000000    3.000000    1.000000    3.000000    1.000000    4.000000    4.000000    2.000000    2.000000    0.000000    0.000000    0.000000    0.000000    36.000000    6.600000    1.000000    3.000000    1.000000
205 2.000000    1.000000    38.500000    100.000000    0.000000    3.000000    3.000000    5.000000    2.000000    4.000000    3.000000    4.000000    2.000000    1.000000    0.000000    4.000000    5.000000    0.000000    0.000000    0.000000    0.000000    -1.000000
206 1.000000    1.000000    38.500000    96.000000    30.000000    2.000000    3.000000    4.000000    2.000000    4.000000    4.000000    3.000000    2.000000    1.000000    0.000000    3.000000    5.000000    50.000000    65.000000    0.000000    0.000000    1.000000
207 1.000000    1.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    45.000000    8.700000    0.000000    0.000000    -1.000000
208 1.000000    1.000000    37.800000    88.000000    80.000000    3.000000    3.000000    5.000000    2.000000    0.000000    3.000000    3.000000    2.000000    3.000000    0.000000    4.000000    5.000000    64.000000    89.000000    0.000000    0.000000    -1.000000
209 2.000000    1.000000    37.500000    44.000000    10.000000    3.000000    1.000000    1.000000    1.000000    3.000000    1.000000    2.000000    2.000000    0.000000    0.000000    3.000000    3.000000    43.000000    51.000000    1.000000    1.000000    1.000000
210 1.000000    1.000000    37.900000    68.000000    20.000000    0.000000    1.000000    2.000000    1.000000    2.000000    4.000000    2.000000    0.000000    0.000000    0.000000    1.000000    5.000000    45.000000    4.000000    3.000000    2.800000    -1.000000
211 1.000000    1.000000    38.000000    86.000000    24.000000    4.000000    3.000000    4.000000    1.000000    2.000000    4.000000    4.000000    1.000000    1.000000    0.000000    4.000000    5.000000    45.000000    5.500000    1.000000    10.100000    -1.000000
212 1.000000    9.000000    38.900000    120.000000    30.000000    1.000000    3.000000    2.000000    2.000000    3.000000    3.000000    3.000000    3.000000    1.000000    3.000000    0.000000    0.000000    47.000000    6.300000    1.000000    0.000000    1.000000
213 1.000000    1.000000    37.600000    45.000000    12.000000    3.000000    1.000000    3.000000    1.000000    0.000000    2.000000    2.000000    2.000000    1.000000    0.000000    1.000000    4.000000    39.000000    7.000000    2.000000    1.500000    1.000000
214 2.000000    1.000000    38.600000    56.000000    32.000000    2.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    2.000000    0.000000    0.000000    2.000000    0.000000    40.000000    7.000000    2.000000    2.100000    1.000000
215 1.000000    1.000000    37.800000    40.000000    12.000000    1.000000    1.000000    1.000000    1.000000    1.000000    2.000000    1.000000    2.000000    1.000000    0.000000    1.000000    2.000000    38.000000    7.000000    0.000000    0.000000    1.000000
216 2.000000    1.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.000000
217 1.000000    1.000000    38.000000    76.000000    18.000000    0.000000    0.000000    0.000000    2.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    71.000000    11.000000    0.000000    0.000000    1.000000
218 1.000000    1.000000    38.100000    40.000000    36.000000    1.000000    2.000000    2.000000    1.000000    2.000000    2.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    -1.000000
219 1.000000    1.000000    0.000000    52.000000    28.000000    3.000000    3.000000    4.000000    1.000000    3.000000    4.000000    3.000000    2.000000    1.000000    0.000000    4.000000    4.000000    37.000000    8.100000    0.000000    0.000000    1.000000
220 1.000000    1.000000    39.200000    88.000000    58.000000    4.000000    4.000000    0.000000    2.000000    5.000000    4.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    2.000000    2.000000    -1.000000
221 1.000000    1.000000    38.500000    92.000000    40.000000    4.000000    3.000000    0.000000    1.000000    2.000000    4.000000    3.000000    0.000000    0.000000    0.000000    4.000000    0.000000    46.000000    67.000000    2.000000    2.000000    1.000000
222 1.000000    1.000000    0.000000    112.000000    13.000000    4.000000    4.000000    4.000000    1.000000    2.000000    3.000000    1.000000    2.000000    1.000000    4.500000    4.000000    4.000000    60.000000    6.300000    3.000000    0.000000    1.000000
223 1.000000    1.000000    37.700000    66.000000    12.000000    1.000000    1.000000    3.000000    1.000000    3.000000    3.000000    2.000000    2.000000    0.000000    0.000000    4.000000    4.000000    31.500000    6.200000    2.000000    1.600000    1.000000
224 1.000000    1.000000    38.800000    50.000000    14.000000    1.000000    1.000000    1.000000    1.000000    3.000000    1.000000    1.000000    1.000000    1.000000    0.000000    3.000000    5.000000    38.000000    58.000000    0.000000    0.000000    1.000000
225 2.000000    1.000000    38.400000    54.000000    24.000000    1.000000    1.000000    1.000000    1.000000    1.000000    3.000000    1.000000    2.000000    1.000000    0.000000    3.000000    2.000000    49.000000    7.200000    1.000000    8.000000    1.000000
226 1.000000    1.000000    39.200000    120.000000    20.000000    4.000000    3.000000    5.000000    2.000000    2.000000    3.000000    3.000000    1.000000    3.000000    0.000000    0.000000    4.000000    60.000000    8.800000    3.000000    0.000000    -1.000000
227 1.000000    9.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    45.000000    6.500000    2.000000    0.000000    1.000000
228 1.000000    1.000000    37.300000    90.000000    40.000000    3.000000    0.000000    6.000000    2.000000    5.000000    4.000000    3.000000    2.000000    2.000000    0.000000    1.000000    5.000000    65.000000    50.000000    3.000000    2.000000    -1.000000
229 1.000000    9.000000    38.500000    120.000000    70.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.000000    0.000000    2.000000    0.000000    0.000000    1.000000    0.000000    35.000000    54.000000    1.000000    1.000000    1.000000
230 1.000000    1.000000    38.500000    104.000000    40.000000    3.000000    3.000000    0.000000    1.000000    4.000000    3.000000    4.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.000000
231 2.000000    1.000000    39.500000    92.000000    28.000000    3.000000    3.000000    6.000000    1.000000    5.000000    4.000000    1.000000    0.000000    3.000000    0.000000    4.000000    0.000000    72.000000    6.400000    0.000000    3.600000    -1.000000
232 1.000000    1.000000    38.500000    30.000000    18.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    40.000000    7.700000    0.000000    0.000000    1.000000
233 1.000000    1.000000    38.300000    72.000000    30.000000    4.000000    3.000000    3.000000    2.000000    3.000000    3.000000    3.000000    2.000000    1.000000    0.000000    3.000000    5.000000    43.000000    7.000000    2.000000    3.900000    1.000000
234 2.000000    1.000000    37.500000    48.000000    30.000000    4.000000    1.000000    3.000000    1.000000    0.000000    2.000000    1.000000    1.000000    1.000000    0.000000    1.000000    1.000000    48.000000    8.600000    0.000000    0.000000    1.000000
235 1.000000    1.000000    38.100000    52.000000    24.000000    1.000000    1.000000    5.000000    1.000000    4.000000    3.000000    1.000000    2.000000    3.000000    7.000000    1.000000    0.000000    54.000000    7.500000    2.000000    2.600000    -1.000000
236 2.000000    1.000000    38.200000    42.000000    26.000000    1.000000    1.000000    1.000000    1.000000    3.000000    1.000000    2.000000    0.000000    0.000000    0.000000    1.000000    0.000000    36.000000    6.900000    0.000000    0.000000    1.000000
237 2.000000    1.000000    37.900000    54.000000    42.000000    2.000000    1.000000    5.000000    1.000000    3.000000    1.000000    1.000000    0.000000    1.000000    0.000000    0.000000    2.000000    47.000000    54.000000    3.000000    1.000000    1.000000
238 2.000000    1.000000    36.100000    88.000000    0.000000    3.000000    3.000000    3.000000    1.000000    3.000000    3.000000    2.000000    2.000000    3.000000    0.000000    0.000000    4.000000    45.000000    7.000000    3.000000    4.800000    -1.000000
239 1.000000    1.000000    38.100000    70.000000    22.000000    0.000000    1.000000    0.000000    1.000000    5.000000    3.000000    0.000000    0.000000    0.000000    0.000000    0.000000    5.000000    36.000000    65.000000    0.000000    0.000000    -1.000000
240 1.000000    1.000000    38.000000    90.000000    30.000000    4.000000    3.000000    4.000000    2.000000    5.000000    4.000000    4.000000    0.000000    0.000000    0.000000    4.000000    5.000000    55.000000    6.100000    0.000000    0.000000    -1.000000
241 1.000000    1.000000    38.200000    52.000000    16.000000    1.000000    1.000000    2.000000    1.000000    1.000000    2.000000    1.000000    1.000000    1.000000    0.000000    1.000000    0.000000    43.000000    8.100000    0.000000    0.000000    1.000000
242 1.000000    1.000000    0.000000    36.000000    32.000000    1.000000    1.000000    4.000000    1.000000    5.000000    3.000000    3.000000    2.000000    3.000000    4.000000    0.000000    4.000000    41.000000    5.900000    0.000000    0.000000    -1.000000
243 1.000000    1.000000    38.400000    92.000000    20.000000    1.000000    0.000000    0.000000    2.000000    0.000000    3.000000    3.000000    0.000000    0.000000    0.000000    1.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.000000
244 1.000000    9.000000    38.200000    124.000000    88.000000    1.000000    3.000000    2.000000    1.000000    2.000000    3.000000    4.000000    0.000000    0.000000    0.000000    0.000000    0.000000    47.000000    8.000000    1.000000    0.000000    1.000000
245 2.000000    1.000000    0.000000    96.000000    0.000000    3.000000    3.000000    3.000000    2.000000    5.000000    4.000000    4.000000    0.000000    1.000000    0.000000    4.000000    5.000000    60.000000    0.000000    0.000000    0.000000    -1.000000
246 1.000000    1.000000    37.600000    68.000000    32.000000    3.000000    0.000000    3.000000    1.000000    4.000000    2.000000    4.000000    2.000000    2.000000    6.500000    1.000000    5.000000    47.000000    7.200000    1.000000    0.000000    1.000000
247 1.000000    1.000000    38.100000    88.000000    24.000000    3.000000    3.000000    4.000000    1.000000    5.000000    4.000000    3.000000    2.000000    1.000000    0.000000    3.000000    4.000000    41.000000    4.600000    0.000000    0.000000    -1.000000
248 1.000000    1.000000    38.000000    108.000000    60.000000    2.000000    3.000000    4.000000    1.000000    4.000000    3.000000    3.000000    2.000000    0.000000    0.000000    3.000000    4.000000    0.000000    0.000000    3.000000    0.000000    1.000000
249 2.000000    1.000000    38.200000    48.000000    0.000000    2.000000    0.000000    1.000000    2.000000    3.000000    3.000000    1.000000    2.000000    1.000000    0.000000    0.000000    2.000000    34.000000    6.600000    0.000000    0.000000    1.000000
250 1.000000    1.000000    39.300000    100.000000    51.000000    4.000000    4.000000    6.000000    1.000000    2.000000    4.000000    1.000000    1.000000    3.000000    2.000000    0.000000    4.000000    66.000000    13.000000    3.000000    2.000000    -1.000000
251 2.000000    1.000000    36.600000    42.000000    18.000000    3.000000    3.000000    2.000000    1.000000    1.000000    4.000000    1.000000    1.000000    1.000000    0.000000    0.000000    5.000000    52.000000    7.100000    0.000000    0.000000    -1.000000
252 1.000000    9.000000    38.800000    124.000000    36.000000    3.000000    1.000000    2.000000    1.000000    2.000000    3.000000    4.000000    1.000000    1.000000    0.000000    4.000000    4.000000    50.000000    7.600000    3.000000    0.000000    -1.000000
253 2.000000    1.000000    0.000000    112.000000    24.000000    3.000000    3.000000    4.000000    2.000000    5.000000    4.000000    2.000000    0.000000    0.000000    0.000000    4.000000    0.000000    40.000000    5.300000    3.000000    2.600000    1.000000
254 1.000000    1.000000    0.000000    80.000000    0.000000    3.000000    3.000000    3.000000    1.000000    4.000000    4.000000    4.000000    0.000000    0.000000    0.000000    4.000000    5.000000    43.000000    70.000000    0.000000    0.000000    1.000000
255 1.000000    9.000000    38.800000    184.000000    84.000000    1.000000    0.000000    1.000000    1.000000    4.000000    1.000000    3.000000    0.000000    0.000000    0.000000    2.000000    0.000000    33.000000    3.300000    0.000000    0.000000    -1.000000
256 1.000000    1.000000    37.500000    72.000000    0.000000    2.000000    1.000000    1.000000    1.000000    2.000000    1.000000    1.000000    1.000000    1.000000    0.000000    1.000000    0.000000    35.000000    65.000000    2.000000    2.000000    -1.000000
257 1.000000    1.000000    38.700000    96.000000    28.000000    3.000000    3.000000    4.000000    1.000000    0.000000    4.000000    0.000000    0.000000    3.000000    7.500000    0.000000    0.000000    64.000000    9.000000    0.000000    0.000000    -1.000000
258 2.000000    1.000000    37.500000    52.000000    12.000000    1.000000    1.000000    1.000000    1.000000    2.000000    3.000000    2.000000    2.000000    1.000000    0.000000    3.000000    5.000000    36.000000    61.000000    1.000000    1.000000    1.000000
259 1.000000    1.000000    40.800000    72.000000    42.000000    3.000000    3.000000    1.000000    1.000000    2.000000    3.000000    1.000000    2.000000    1.000000    0.000000    0.000000    0.000000    54.000000    7.400000    3.000000    0.000000    -1.000000
260 2.000000    1.000000    38.000000    40.000000    25.000000    0.000000    1.000000    1.000000    1.000000    4.000000    3.000000    2.000000    1.000000    1.000000    0.000000    4.000000    0.000000    37.000000    69.000000    0.000000    0.000000    1.000000
261 2.000000    1.000000    38.400000    48.000000    16.000000    2.000000    1.000000    1.000000    1.000000    1.000000    0.000000    2.000000    2.000000    1.000000    0.000000    0.000000    2.000000    39.000000    6.500000    0.000000    0.000000    1.000000
262 2.000000    9.000000    38.600000    88.000000    28.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    35.000000    5.900000    0.000000    0.000000    1.000000
263 1.000000    1.000000    37.100000    75.000000    36.000000    0.000000    0.000000    3.000000    2.000000    4.000000    4.000000    2.000000    2.000000    3.000000    5.000000    4.000000    4.000000    48.000000    7.400000    3.000000    3.200000    -1.000000
264 1.000000    1.000000    38.300000    44.000000    21.000000    3.000000    1.000000    2.000000    1.000000    3.000000    3.000000    3.000000    2.000000    1.000000    0.000000    1.000000    5.000000    44.000000    6.500000    2.000000    4.400000    1.000000
265 2.000000    1.000000    0.000000    56.000000    68.000000    3.000000    1.000000    1.000000    1.000000    3.000000    3.000000    1.000000    2.000000    1.000000    0.000000    1.000000    0.000000    40.000000    6.000000    0.000000    0.000000    -1.000000
266 2.000000    1.000000    38.600000    68.000000    20.000000    2.000000    1.000000    3.000000    1.000000    3.000000    3.000000    2.000000    1.000000    1.000000    0.000000    1.000000    5.000000    38.000000    6.500000    1.000000    0.000000    1.000000
267 2.000000    1.000000    38.300000    54.000000    18.000000    3.000000    1.000000    2.000000    1.000000    2.000000    3.000000    2.000000    0.000000    3.000000    5.400000    0.000000    4.000000    44.000000    7.200000    3.000000    0.000000    1.000000
268 1.000000    1.000000    38.200000    42.000000    20.000000    0.000000    0.000000    1.000000    1.000000    0.000000    3.000000    0.000000    0.000000    0.000000    0.000000    3.000000    0.000000    47.000000    60.000000    0.000000    0.000000    1.000000
269 1.000000    1.000000    39.300000    64.000000    90.000000    2.000000    3.000000    1.000000    1.000000    0.000000    3.000000    1.000000    1.000000    2.000000    6.500000    1.000000    5.000000    39.000000    6.700000    0.000000    0.000000    1.000000
270 1.000000    1.000000    37.500000    60.000000    50.000000    3.000000    3.000000    1.000000    1.000000    3.000000    3.000000    2.000000    2.000000    2.000000    3.500000    3.000000    4.000000    35.000000    6.500000    0.000000    0.000000    -1.000000
271 1.000000    1.000000    37.700000    80.000000    0.000000    3.000000    3.000000    6.000000    1.000000    5.000000    4.000000    1.000000    2.000000    3.000000    0.000000    3.000000    1.000000    50.000000    55.000000    3.000000    2.000000    1.000000
272 1.000000    1.000000    0.000000    100.000000    30.000000    3.000000    3.000000    4.000000    2.000000    5.000000    4.000000    4.000000    3.000000    3.000000    0.000000    4.000000    4.000000    52.000000    6.600000    0.000000    0.000000    1.000000
273 1.000000    1.000000    37.700000    120.000000    28.000000    3.000000    3.000000    3.000000    1.000000    5.000000    3.000000    3.000000    1.000000    1.000000    0.000000    0.000000    0.000000    65.000000    7.000000    3.000000    0.000000    -1.000000
274 1.000000    1.000000    0.000000    76.000000    0.000000    0.000000    3.000000    0.000000    0.000000    0.000000    4.000000    4.000000    0.000000    0.000000    0.000000    0.000000    5.000000    0.000000    0.000000    0.000000    0.000000    -1.000000
275 1.000000    9.000000    38.800000    150.000000    50.000000    1.000000    3.000000    6.000000    2.000000    5.000000    3.000000    2.000000    1.000000    1.000000    0.000000    0.000000    0.000000    50.000000    6.200000    0.000000    0.000000    -1.000000
276 1.000000    1.000000    38.000000    36.000000    16.000000    3.000000    1.000000    1.000000    1.000000    4.000000    2.000000    2.000000    3.000000    3.000000    2.000000    3.000000    0.000000    37.000000    75.000000    2.000000    1.000000    -1.000000
277 2.000000    1.000000    36.900000    50.000000    40.000000    2.000000    3.000000    3.000000    1.000000    1.000000    3.000000    2.000000    3.000000    1.000000    7.000000    0.000000    0.000000    37.500000    6.500000    0.000000    0.000000    1.000000
278 2.000000    1.000000    37.800000    40.000000    16.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    0.000000    0.000000    0.000000    1.000000    1.000000    37.000000    6.800000    0.000000    0.000000    1.000000
279 2.000000    1.000000    38.200000    56.000000    40.000000    4.000000    3.000000    1.000000    1.000000    2.000000    4.000000    3.000000    2.000000    2.000000    7.500000    0.000000    0.000000    47.000000    7.200000    1.000000    2.500000    1.000000
280 1.000000    1.000000    38.600000    48.000000    12.000000    0.000000    0.000000    1.000000    0.000000    1.000000    1.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    36.000000    67.000000    0.000000    0.000000    1.000000
281 2.000000    1.000000    40.000000    78.000000    0.000000    3.000000    3.000000    5.000000    1.000000    2.000000    3.000000    1.000000    1.000000    1.000000    0.000000    4.000000    1.000000    66.000000    6.500000    0.000000    0.000000    -1.000000
282 1.000000    1.000000    0.000000    70.000000    16.000000    3.000000    4.000000    5.000000    2.000000    2.000000    3.000000    2.000000    2.000000    1.000000    0.000000    4.000000    5.000000    60.000000    7.500000    0.000000    0.000000    -1.000000
283 1.000000    1.000000    38.200000    72.000000    18.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    35.000000    6.400000    0.000000    0.000000    1.000000
284 2.000000    1.000000    38.500000    54.000000    0.000000    1.000000    1.000000    1.000000    1.000000    3.000000    1.000000    1.000000    2.000000    1.000000    0.000000    1.000000    0.000000    40.000000    6.800000    2.000000    7.000000    1.000000
285 1.000000    1.000000    38.500000    66.000000    24.000000    1.000000    1.000000    1.000000    1.000000    3.000000    3.000000    1.000000    2.000000    1.000000    0.000000    4.000000    5.000000    40.000000    6.700000    1.000000    0.000000    1.000000
286 2.000000    1.000000    37.800000    82.000000    12.000000    3.000000    1.000000    1.000000    2.000000    4.000000    0.000000    3.000000    1.000000    3.000000    0.000000    0.000000    0.000000    50.000000    7.000000    0.000000    0.000000    -1.000000
287 2.000000    9.000000    39.500000    84.000000    30.000000    0.000000    0.000000    0.000000    1.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    28.000000    5.000000    0.000000    0.000000    1.000000
288 1.000000    1.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.000000
289 1.000000    1.000000    38.000000    50.000000    36.000000    0.000000    1.000000    1.000000    1.000000    3.000000    2.000000    2.000000    0.000000    0.000000    0.000000    3.000000    0.000000    39.000000    6.600000    1.000000    5.300000    1.000000
290 2.000000    1.000000    38.600000    45.000000    16.000000    2.000000    1.000000    2.000000    1.000000    1.000000    1.000000    0.000000    0.000000    0.000000    0.000000    1.000000    1.000000    43.000000    58.000000    0.000000    0.000000    1.000000
291 1.000000    1.000000    38.900000    80.000000    44.000000    3.000000    3.000000    3.000000    1.000000    2.000000    3.000000    3.000000    2.000000    2.000000    7.000000    3.000000    1.000000    54.000000    6.500000    3.000000    0.000000    -1.000000
292 1.000000    1.000000    37.000000    66.000000    20.000000    1.000000    3.000000    2.000000    1.000000    4.000000    3.000000    3.000000    1.000000    0.000000    0.000000    1.000000    5.000000    35.000000    6.900000    2.000000    0.000000    -1.000000
293 1.000000    1.000000    0.000000    78.000000    24.000000    3.000000    3.000000    3.000000    1.000000    0.000000    3.000000    0.000000    2.000000    1.000000    0.000000    0.000000    4.000000    43.000000    62.000000    0.000000    2.000000    -1.000000
294 2.000000    1.000000    38.500000    40.000000    16.000000    1.000000    1.000000    1.000000    1.000000    2.000000    1.000000    1.000000    0.000000    0.000000    0.000000    3.000000    2.000000    37.000000    67.000000    0.000000    0.000000    1.000000
295 1.000000    1.000000    0.000000    120.000000    70.000000    4.000000    0.000000    4.000000    2.000000    2.000000    4.000000    0.000000    0.000000    0.000000    0.000000    0.000000    5.000000    55.000000    65.000000    0.000000    0.000000    -1.000000
296 2.000000    1.000000    37.200000    72.000000    24.000000    3.000000    2.000000    4.000000    2.000000    4.000000    3.000000    3.000000    3.000000    1.000000    0.000000    4.000000    4.000000    44.000000    0.000000    3.000000    3.300000    -1.000000
297 1.000000    1.000000    37.500000    72.000000    30.000000    4.000000    3.000000    4.000000    1.000000    4.000000    4.000000    3.000000    2.000000    1.000000    0.000000    3.000000    5.000000    60.000000    6.800000    0.000000    0.000000    -1.000000
298 1.000000    1.000000    36.500000    100.000000    24.000000    3.000000    3.000000    3.000000    1.000000    3.000000    3.000000    3.000000    3.000000    1.000000    0.000000    4.000000    4.000000    50.000000    6.000000    3.000000    3.400000    1.000000
299 1.000000    1.000000    37.200000    40.000000    20.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    4.000000    1.000000    36.000000    62.000000    1.000000    1.000000    -1.000000
训练数据集

horseColicTest2.txt

 1 2.000000    1.000000    38.500000    54.000000    20.000000    0.000000    1.000000    2.000000    2.000000    3.000000    4.000000    1.000000    2.000000    2.000000    5.900000    0.000000    2.000000    42.000000    6.300000    0.000000    0.000000    1.000000
 2 2.000000    1.000000    37.600000    48.000000    36.000000    0.000000    0.000000    1.000000    1.000000    0.000000    3.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    44.000000    6.300000    1.000000    5.000000    1.000000
 3 1.000000    1.000000    37.700000    44.000000    28.000000    0.000000    4.000000    3.000000    2.000000    5.000000    4.000000    4.000000    1.000000    1.000000    0.000000    3.000000    5.000000    45.000000    70.000000    3.000000    2.000000    1.000000
 4 1.000000    1.000000    37.000000    56.000000    24.000000    3.000000    1.000000    4.000000    2.000000    4.000000    4.000000    3.000000    1.000000    1.000000    0.000000    0.000000    0.000000    35.000000    61.000000    3.000000    2.000000    -1.000000
 5 2.000000    1.000000    38.000000    42.000000    12.000000    3.000000    0.000000    3.000000    1.000000    1.000000    0.000000    1.000000    0.000000    0.000000    0.000000    0.000000    2.000000    37.000000    5.800000    0.000000    0.000000    1.000000
 6 1.000000    1.000000    0.000000    60.000000    40.000000    3.000000    0.000000    1.000000    1.000000    0.000000    4.000000    0.000000    3.000000    2.000000    0.000000    0.000000    5.000000    42.000000    72.000000    0.000000    0.000000    1.000000
 7 2.000000    1.000000    38.400000    80.000000    60.000000    3.000000    2.000000    2.000000    1.000000    3.000000    2.000000    1.000000    2.000000    2.000000    0.000000    1.000000    1.000000    54.000000    6.900000    0.000000    0.000000    1.000000
 8 2.000000    1.000000    37.800000    48.000000    12.000000    2.000000    1.000000    2.000000    1.000000    3.000000    0.000000    1.000000    2.000000    0.000000    0.000000    2.000000    0.000000    48.000000    7.300000    1.000000    0.000000    1.000000
 9 2.000000    1.000000    37.900000    45.000000    36.000000    3.000000    3.000000    3.000000    2.000000    2.000000    3.000000    1.000000    2.000000    1.000000    0.000000    3.000000    0.000000    33.000000    5.700000    3.000000    0.000000    1.000000
10 2.000000    1.000000    39.000000    84.000000    12.000000    3.000000    1.000000    5.000000    1.000000    2.000000    4.000000    2.000000    1.000000    2.000000    7.000000    0.000000    4.000000    62.000000    5.900000    2.000000    2.200000    -1.000000
11 2.000000    1.000000    38.200000    60.000000    24.000000    3.000000    1.000000    3.000000    2.000000    3.000000    3.000000    2.000000    3.000000    3.000000    0.000000    4.000000    4.000000    53.000000    7.500000    2.000000    1.400000    1.000000
12 1.000000    1.000000    0.000000    140.000000    0.000000    0.000000    0.000000    4.000000    2.000000    5.000000    4.000000    4.000000    1.000000    1.000000    0.000000    0.000000    5.000000    30.000000    69.000000    0.000000    0.000000    -1.000000
13 1.000000    1.000000    37.900000    120.000000    60.000000    3.000000    3.000000    3.000000    1.000000    5.000000    4.000000    4.000000    2.000000    2.000000    7.500000    4.000000    5.000000    52.000000    6.600000    3.000000    1.800000    -1.000000
14 2.000000    1.000000    38.000000    72.000000    36.000000    1.000000    1.000000    3.000000    1.000000    3.000000    0.000000    2.000000    2.000000    1.000000    0.000000    3.000000    5.000000    38.000000    6.800000    2.000000    2.000000    1.000000
15 2.000000    9.000000    38.000000    92.000000    28.000000    1.000000    1.000000    2.000000    1.000000    1.000000    3.000000    2.000000    3.000000    0.000000    7.200000    0.000000    0.000000    37.000000    6.100000    1.000000    1.100000    1.000000
16 1.000000    1.000000    38.300000    66.000000    30.000000    2.000000    3.000000    1.000000    1.000000    2.000000    4.000000    3.000000    3.000000    2.000000    8.500000    4.000000    5.000000    37.000000    6.000000    0.000000    0.000000    1.000000
17 2.000000    1.000000    37.500000    48.000000    24.000000    3.000000    1.000000    1.000000    1.000000    2.000000    1.000000    0.000000    1.000000    1.000000    0.000000    3.000000    2.000000    43.000000    6.000000    1.000000    2.800000    1.000000
18 1.000000    1.000000    37.500000    88.000000    20.000000    2.000000    3.000000    3.000000    1.000000    4.000000    3.000000    3.000000    0.000000    0.000000    0.000000    0.000000    0.000000    35.000000    6.400000    1.000000    0.000000    -1.000000
19 2.000000    9.000000    0.000000    150.000000    60.000000    4.000000    4.000000    4.000000    2.000000    5.000000    4.000000    4.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    -1.000000
20 1.000000    1.000000    39.700000    100.000000    30.000000    0.000000    0.000000    6.000000    2.000000    4.000000    4.000000    3.000000    1.000000    0.000000    0.000000    4.000000    5.000000    65.000000    75.000000    0.000000    0.000000    -1.000000
21 1.000000    1.000000    38.300000    80.000000    0.000000    3.000000    3.000000    4.000000    2.000000    5.000000    4.000000    3.000000    2.000000    1.000000    0.000000    4.000000    4.000000    45.000000    7.500000    2.000000    4.600000    1.000000
22 2.000000    1.000000    37.500000    40.000000    32.000000    3.000000    1.000000    3.000000    1.000000    3.000000    2.000000    3.000000    2.000000    1.000000    0.000000    0.000000    5.000000    32.000000    6.400000    1.000000    1.100000    1.000000
23 1.000000    1.000000    38.400000    84.000000    30.000000    3.000000    1.000000    5.000000    2.000000    4.000000    3.000000    3.000000    2.000000    3.000000    6.500000    4.000000    4.000000    47.000000    7.500000    3.000000    0.000000    -1.000000
24 1.000000    1.000000    38.100000    84.000000    44.000000    4.000000    0.000000    4.000000    2.000000    5.000000    3.000000    1.000000    1.000000    3.000000    5.000000    0.000000    4.000000    60.000000    6.800000    0.000000    5.700000    -1.000000
25 2.000000    1.000000    38.700000    52.000000    0.000000    1.000000    1.000000    1.000000    1.000000    1.000000    3.000000    1.000000    0.000000    0.000000    0.000000    1.000000    3.000000    4.000000    74.000000    0.000000    0.000000    1.000000
26 2.000000    1.000000    38.100000    44.000000    40.000000    2.000000    1.000000    3.000000    1.000000    3.000000    3.000000    1.000000    0.000000    0.000000    0.000000    1.000000    3.000000    35.000000    6.800000    0.000000    0.000000    1.000000
27 2.000000    1.000000    38.400000    52.000000    20.000000    2.000000    1.000000    3.000000    1.000000    1.000000    3.000000    2.000000    2.000000    1.000000    0.000000    3.000000    5.000000    41.000000    63.000000    1.000000    1.000000    1.000000
28 1.000000    1.000000    38.200000    60.000000    0.000000    1.000000    0.000000    3.000000    1.000000    2.000000    1.000000    1.000000    1.000000    1.000000    0.000000    4.000000    4.000000    43.000000    6.200000    2.000000    3.900000    1.000000
29 2.000000    1.000000    37.700000    40.000000    18.000000    1.000000    1.000000    1.000000    0.000000    3.000000    2.000000    1.000000    1.000000    1.000000    0.000000    3.000000    3.000000    36.000000    3.500000    0.000000    0.000000    1.000000
30 1.000000    1.000000    39.100000    60.000000    10.000000    0.000000    1.000000    1.000000    0.000000    2.000000    3.000000    0.000000    0.000000    0.000000    0.000000    4.000000    4.000000    0.000000    0.000000    0.000000    0.000000    1.000000
31 2.000000    1.000000    37.800000    48.000000    16.000000    1.000000    1.000000    1.000000    1.000000    0.000000    1.000000    1.000000    2.000000    1.000000    0.000000    4.000000    3.000000    43.000000    7.500000    0.000000    0.000000    1.000000
32 1.000000    1.000000    39.000000    120.000000    0.000000    4.000000    3.000000    5.000000    2.000000    2.000000    4.000000    3.000000    2.000000    3.000000    8.000000    0.000000    0.000000    65.000000    8.200000    3.000000    4.600000    1.000000
33 1.000000    1.000000    38.200000    76.000000    0.000000    2.000000    3.000000    2.000000    1.000000    5.000000    3.000000    3.000000    1.000000    2.000000    6.000000    1.000000    5.000000    35.000000    6.500000    2.000000    0.900000    1.000000
34 2.000000    1.000000    38.300000    88.000000    0.000000    0.000000    0.000000    6.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    -1.000000
35 1.000000    1.000000    38.000000    80.000000    30.000000    3.000000    3.000000    3.000000    1.000000    0.000000    0.000000    0.000000    0.000000    0.000000    6.000000    0.000000    0.000000    48.000000    8.300000    0.000000    4.300000    1.000000
36 1.000000    1.000000    0.000000    0.000000    0.000000    3.000000    1.000000    1.000000    1.000000    2.000000    3.000000    3.000000    1.000000    3.000000    6.000000    4.000000    4.000000    0.000000    0.000000    2.000000    0.000000    -1.000000
37 1.000000    1.000000    37.600000    40.000000    0.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    0.000000    0.000000    0.000000    1.000000    1.000000    0.000000    0.000000    2.000000    2.100000    1.000000
38 2.000000    1.000000    37.500000    44.000000    0.000000    1.000000    1.000000    1.000000    1.000000    3.000000    3.000000    2.000000    0.000000    0.000000    0.000000    0.000000    0.000000    45.000000    5.800000    2.000000    1.400000    1.000000
39 2.000000    1.000000    38.200000    42.000000    16.000000    1.000000    1.000000    3.000000    1.000000    1.000000    3.000000    1.000000    0.000000    0.000000    0.000000    1.000000    0.000000    35.000000    60.000000    1.000000    1.000000    1.000000
40 2.000000    1.000000    38.000000    56.000000    44.000000    3.000000    3.000000    3.000000    0.000000    0.000000    1.000000    1.000000    2.000000    1.000000    0.000000    4.000000    0.000000    47.000000    70.000000    2.000000    1.000000    1.000000
41 2.000000    1.000000    38.300000    45.000000    20.000000    3.000000    3.000000    2.000000    2.000000    2.000000    4.000000    1.000000    2.000000    0.000000    0.000000    4.000000    0.000000    0.000000    0.000000    0.000000    0.000000    1.000000
42 1.000000    1.000000    0.000000    48.000000    96.000000    1.000000    1.000000    3.000000    1.000000    0.000000    4.000000    1.000000    2.000000    1.000000    0.000000    1.000000    4.000000    42.000000    8.000000    1.000000    0.000000    1.000000
43 1.000000    1.000000    37.700000    55.000000    28.000000    2.000000    1.000000    2.000000    1.000000    2.000000    3.000000    3.000000    0.000000    3.000000    5.000000    4.000000    5.000000    0.000000    0.000000    0.000000    0.000000    1.000000
44 2.000000    1.000000    36.000000    100.000000    20.000000    4.000000    3.000000    6.000000    2.000000    2.000000    4.000000    3.000000    1.000000    1.000000    0.000000    4.000000    5.000000    74.000000    5.700000    2.000000    2.500000    -1.000000
45 1.000000    1.000000    37.100000    60.000000    20.000000    2.000000    0.000000    4.000000    1.000000    3.000000    0.000000    3.000000    0.000000    2.000000    5.000000    3.000000    4.000000    64.000000    8.500000    2.000000    0.000000    1.000000
46 2.000000    1.000000    37.100000    114.000000    40.000000    3.000000    0.000000    3.000000    2.000000    2.000000    2.000000    1.000000    0.000000    0.000000    0.000000    0.000000    3.000000    32.000000    0.000000    3.000000    6.500000    1.000000
47 1.000000    1.000000    38.100000    72.000000    30.000000    3.000000    3.000000    3.000000    1.000000    4.000000    4.000000    3.000000    2.000000    1.000000    0.000000    3.000000    5.000000    37.000000    56.000000    3.000000    1.000000    1.000000
48 1.000000    1.000000    37.000000    44.000000    12.000000    3.000000    1.000000    1.000000    2.000000    1.000000    1.000000    1.000000    0.000000    0.000000    0.000000    4.000000    2.000000    40.000000    6.700000    3.000000    8.000000    1.000000
49 1.000000    1.000000    38.600000    48.000000    20.000000    3.000000    1.000000    1.000000    1.000000    4.000000    3.000000    1.000000    0.000000    0.000000    0.000000    3.000000    0.000000    37.000000    75.000000    0.000000    0.000000    1.000000
50 1.000000    1.000000    0.000000    82.000000    72.000000    3.000000    1.000000    4.000000    1.000000    2.000000    3.000000    3.000000    0.000000    3.000000    0.000000    4.000000    4.000000    53.000000    65.000000    3.000000    2.000000    -1.000000
51 1.000000    9.000000    38.200000    78.000000    60.000000    4.000000    4.000000    6.000000    0.000000    3.000000    3.000000    3.000000    0.000000    0.000000    0.000000    1.000000    0.000000    59.000000    5.800000    3.000000    3.100000    -1.000000
52 2.000000    1.000000    37.800000    60.000000    16.000000    1.000000    1.000000    3.000000    1.000000    2.000000    3.000000    2.000000    1.000000    2.000000    0.000000    3.000000    0.000000    41.000000    73.000000    0.000000    0.000000    -1.000000
53 1.000000    1.000000    38.700000    34.000000    30.000000    2.000000    0.000000    3.000000    1.000000    2.000000    3.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    33.000000    69.000000    0.000000    2.000000    -1.000000
54 1.000000    1.000000    0.000000    36.000000    12.000000    1.000000    1.000000    1.000000    1.000000    1.000000    2.000000    1.000000    1.000000    1.000000    0.000000    1.000000    5.000000    44.000000    0.000000    0.000000    0.000000    1.000000
55 2.000000    1.000000    38.300000    44.000000    60.000000    0.000000    0.000000    1.000000    1.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    6.400000    36.000000    0.000000    0.000000    1.000000
56 2.000000    1.000000    37.400000    54.000000    18.000000    3.000000    0.000000    1.000000    1.000000    3.000000    4.000000    3.000000    2.000000    2.000000    0.000000    4.000000    5.000000    30.000000    7.100000    2.000000    0.000000    1.000000
57 1.000000    1.000000    0.000000    0.000000    0.000000    4.000000    3.000000    0.000000    2.000000    2.000000    4.000000    1.000000    0.000000    0.000000    0.000000    0.000000    0.000000    54.000000    76.000000    3.000000    2.000000    1.000000
58 1.000000    1.000000    36.600000    48.000000    16.000000    3.000000    1.000000    3.000000    1.000000    4.000000    1.000000    1.000000    1.000000    1.000000    0.000000    0.000000    0.000000    27.000000    56.000000    0.000000    0.000000    -1.000000
59 1.000000    1.000000    38.500000    90.000000    0.000000    1.000000    1.000000    3.000000    1.000000    3.000000    3.000000    3.000000    2.000000    3.000000    2.000000    4.000000    5.000000    47.000000    79.000000    0.000000    0.000000    1.000000
60 1.000000    1.000000    0.000000    75.000000    12.000000    1.000000    1.000000    4.000000    1.000000    5.000000    3.000000    3.000000    0.000000    3.000000    5.800000    0.000000    0.000000    58.000000    8.500000    1.000000    0.000000    1.000000
61 2.000000    1.000000    38.200000    42.000000    0.000000    3.000000    1.000000    1.000000    1.000000    1.000000    1.000000    2.000000    2.000000    1.000000    0.000000    3.000000    2.000000    35.000000    5.900000    2.000000    0.000000    1.000000
62 1.000000    9.000000    38.200000    78.000000    60.000000    4.000000    4.000000    6.000000    0.000000    3.000000    3.000000    3.000000    0.000000    0.000000    0.000000    1.000000    0.000000    59.000000    5.800000    3.000000    3.100000    -1.000000
63 2.000000    1.000000    38.600000    60.000000    30.000000    1.000000    1.000000    3.000000    1.000000    4.000000    2.000000    2.000000    1.000000    1.000000    0.000000    0.000000    0.000000    40.000000    6.000000    1.000000    0.000000    1.000000
64 2.000000    1.000000    37.800000    42.000000    40.000000    1.000000    1.000000    1.000000    1.000000    1.000000    3.000000    1.000000    0.000000    0.000000    0.000000    3.000000    3.000000    36.000000    6.200000    0.000000    0.000000    1.000000
65 1.000000    1.000000    38.000000    60.000000    12.000000    1.000000    1.000000    2.000000    1.000000    2.000000    1.000000    1.000000    1.000000    1.000000    0.000000    1.000000    4.000000    44.000000    65.000000    3.000000    2.000000    -1.000000
66 2.000000    1.000000    38.000000    42.000000    12.000000    3.000000    0.000000    3.000000    1.000000    1.000000    1.000000    1.000000    0.000000    0.000000    0.000000    0.000000    1.000000    37.000000    5.800000    0.000000    0.000000    1.000000
67 2.000000    1.000000    37.600000    88.000000    36.000000    3.000000    1.000000    1.000000    1.000000    3.000000    3.000000    2.000000    1.000000    3.000000    1.500000    0.000000    0.000000    44.000000    6.000000    0.000000    0.000000    -1.000000
测试数据集

AdaBoost算法实现(myAdaboost.py)

每个方法的作用,以及每行代码的作用,同样我都做了详细的注解。

值得一提的是,我将 找到分类器错误率最小的算法buildStump进行了改造(相比于机器学习实战中对应的样例,可以明显提升运行速度),

在阈值不等式遍历时,如果在“lt”符号遍历的差错率 weightedError < 1 - weightedError,该阈值不等式遍历就结束,

不需要进行“gt”的遍历。运行结果和机器学习实践还是一样的。

 

  1 # -*- coding: utf-8 -*-
  2 """
  3 Created on Thu Sep 13 13:37:39 2018
  4 Adaboost(adaptive Boosting): 多个弱分类器集成为强分类器
  5 @author: weixw
  6 """
  7 import numpy as np
  8 
  9 #输入:数据文件
 10 #功能:加载文件,文件最后一列是标签数据,分离特征数据集与标签数据集
 11 #     自动检测多少列特征数据并分离
 12 #输出:特征数据集,标签数据集
 13 def loadDataSet(fileName):
 14     #特征数据列长度
 15     numberFeat = len(open(fileName).readline().split('\t')) - 1
 16     dataSet = []; labelSet = []
 17     fr = open(fileName)
 18     for line in fr.readlines():
 19         lineArr = []
 20         #去除收尾空格,然后分割每一列
 21         curLine = line.strip().split('\t')
 22         #保存每一列特征数据
 23         for i in range(numberFeat):
 24             lineArr.append(float(curLine[i]))
 25         dataSet.append(lineArr)
 26         labelSet.append(float(curLine[-1]))
 27     return dataSet, labelSet
 28 
 29 #输入:特征数据集,列索引(特征维数),某一特征的分类阈值,分类不等式符号
 30 #功能:输出决策树桩标签,满足阈值要求更新标签值
 31 #输出:更新后标签列
 32 def stumpClassify(dataMatrix, columnIndex, threshVal, threshIneq):
 33     #初始化
 34     retLabelArray = np.ones((np.shape(dataMatrix)[0], 1))
 35     #'lt':less than <=
 36     if threshIneq == 'lt':
 37         retLabelArray[dataMatrix[:,columnIndex] <= threshVal] = -1.0
 38     else:
 39         retLabelArray[dataMatrix[:,columnIndex] >= threshVal] = -1.0
 40     return retLabelArray
 41 
 42 #输入:特征数据集,标签数据集,权重矩阵
 43 #功能:找到分类错误率最小的单层决策树(分类器)
 44 #输出:最佳分类器 特征列索引,阈值,阈值对应不等式符号('lt' 或 'gt'),最小加权差错率,该权值向量D下的分类标签估计值
 45 def buildStumpFurther(dataSet, labelSet, D):
 46     #将数组转化为矩阵
 47     dataMatrix = np.mat(dataSet)
 48     labelMatrix = np.mat(labelSet).T
 49     #获取特征数据集行,列最大值
 50     m, n = np.shape(dataMatrix)
 51     #决定步长大小,越大则步长越小,分类准确度越高,但运算次数也越多
 52     numSteps = 10.0
 53     #初始化最佳分类器参数
 54     bestClassifier = {}; bestClassEst = np.mat(np.zeros((m, 1))); minError = np.inf
 55     #每一列都是一个特征,循环遍历所有特征,找到差错最小时特征维数,阈值,以及比较符号
 56     for i in range(n):
 57         #获取对应列最小值,最大值
 58         columnMin = dataMatrix[:, i].min(); columnMax = dataMatrix[:, i].max()
 59         #步长
 60         stepSize = (columnMax - columnMin)/numSteps
 61         #遍历步长所有值,获取最佳阈值
 62         for j in range(-1, int(numSteps)+1):
 63             #遍历阈值所有可能不等式符号
 64             for inequal in ['lt', 'gt']:
 65                 threshVal = columnMin + float(j)*stepSize
 66                 #获取预测标签列表
 67                 predictedVals = stumpClassify(dataMatrix, i, threshVal, inequal)
 68                 #获取当前列中哪些行(1)预测出错,设置1表示出错是便于后续量化计算差错权重(巧妙)
 69                 errArr = np.mat(np.ones((m, 1)))
 70                 errArr[predictedVals == labelMatrix] = 0
 71                 #差错权重 1*n n*1 => 1*1
 72                 weightedError = D.T*errArr
 73                 #因为prop_lt + prop_gt = 1,所以如果prop_lt < 1- prop_gt,就不需要继续循环计算inequal = 'gt'的情况,
 74                 #提高运行速度
 75                 if weightedError <= 1 - weightedError:
 76                     #始终保持minError是最小值
 77                     if weightedError < minError:
 78                         minError = weightedError
 79                         #predictedVals每次都更新,更新后的值不一定是最佳的预测值,所以这里需要new一个新的内存空间,然后赋值
 80                         bestClassEst = predictedVals.copy()
 81                         bestClassifier['dim'] = i
 82                         bestClassifier['thresh'] = threshVal
 83                         bestClassifier['ineq'] = inequal
 84                     #'lt','gt'只需遍历一次,prop_lt + prop_gt = 1
 85                     break
 86                 
 87     return bestClassifier, minError, bestClassEst
 88 
 89 #输入:特征数据集,标签数据集,分类器个数最大值(如果在遍历时错误率为0,则真实分类器个数 < 最大值)
 90 #功能:针对同一个训练集训练不同的分类器(弱分类器),
 91 #     然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。
 92 #输出:弱分类器数组(包含特征列索引,阈值,阈值对应不等式符号('lt' 或 'gt'),alpha权重系数),标签预测数组
 93 def adaBoostTrainDS(dataSet, labelSet, classifierNumberMax):
 94     #弱分类器数组初始化
 95     weakClassifierArr = []
 96     #特征数据行数
 97     m = np.shape(dataSet)[0]
 98     #初始样本权重
 99     D = np.mat(np.ones((m, 1))/m)
100     #初始预测集成标签矩阵
101     preIntegrationLabelsMat = np.mat(np.zeros((m, 1)))
102     for i in range(classifierNumberMax):
103         #找到分类错误率最小的分类器
104         #特征列索引,阈值,阈值对应不等式符号('lt' 或 'gt'),最小加权差错率,该权值向量D下的分类标签估计值
105         bestClassifier, error, preLabelsMat = buildStumpFurther(dataSet, labelSet, D)
106         #计算样本系数alpha 已自然对数e为底 ,为防止分母为0,所以max(error, 1e - 16)
107         alpha = float(0.5 * np.log((1.0 - error)/max(error, 1e-16)))
108         #保存样本系数值
109         bestClassifier['alpha'] = alpha
110         #保存某一次遍历得到的最佳弱分类器
111         weakClassifierArr.append(bestClassifier)
112         #样本权重矩阵更新算法:
113         #如果第i个样本被正确分类了,那么在下一次迭代过程中,该样本的权重DiI就会降低。
114         #如果第i个样本没有被正确分类,那么在下次迭代过程中,该样本的权重Di就会升高。
115         #很巧妙有没有 机器学习实践公式
116         #错误分类样本expon_i通过下面算法得到的结果始终 > 0 ,从而在指数运算中得到权重就会升高;
117         #正确分类结果始终为 < 0,,从而在指数运算中得到权重就会降低;
118         expon = np.multiply(-1*alpha*np.mat(labelSet).T, preLabelsMat)
119         D = np.multiply(D, np.exp(expon))
120         D = D/D.sum()
121         #所有弱分类器集成后结果估计值
122         preIntegrationLabelsMat += alpha*preLabelsMat
123         #计算分类器集成后的错误矩阵,错误设置为1,便于后续计算。很巧妙,需要慢慢品味。
124         integrationErrors = np.multiply(np.sign(preIntegrationLabelsMat) != np.mat(labelSet).T, np.ones((m, 1)))
125         #计算错误率
126         errorRate = integrationErrors.sum()/m
127         print ("集成第 %d 个弱分类器后的错误率: %f"% (i, errorRate))
128         #错误率为0,说明此时的分类器已达到最佳,终止。
129         if errorRate == 0.0 :
130             break
131         
132     return weakClassifierArr, preIntegrationLabelsMat
133 
134 #输入:测试数据,集成分类器
135 #功能:根据集成分类器,预测测试数据的结果
136 #输出:预测结果
137 def adaClassify(testDataSet, classifierArr):
138     dataMat = np.mat(testDataSet)
139     m = np.shape(dataMat)[0]
140     #初始预测集成标签矩阵
141     preIntegrationLabelsMat = np.mat(np.zeros((m, 1)))
142     for i in range(len(classifierArr[0])):
143         classEst = stumpClassify(dataMat,classifierArr[0][i]['dim'],\
144                                  classifierArr[0][i]['thresh'],\
145                                  classifierArr[0][i]['ineq'])#call stump classify
146         #将每一个分类器*权重系数alpha,求和,得到最终的强分类器
147         preIntegrationLabelsMat += classifierArr[0][i]['alpha']*classEst
148     print ("弱分类器集成后的估计值:%s"% str(preIntegrationLabelsMat))
149     return np.sign(preIntegrationLabelsMat)
150         
151         
152         
153     
154 
155 
156                         
157                         
158                 
159     
160     
161     
162     
163     
164     
165     
166     
167 
168 
169         
AdaBoost算法实现

测试代码(testMyAdaboost.py)

 1 # -*- coding: utf-8 -*-
 2 """
 3 Created on Thu Sep 13 17:38:44 2018
 4 
 5 @author: weixw
 6 """
 7 
 8 import myAdaboost as ab
 9 import numpy as np
10 
11 
12 #5个分类器训练错误率:25.41%
13 #10个分类器训练错误率:23.07%
14 #50个分类器训练错误率:18.73%
15 #100个分类器训练错误率:19.06%
16 #500个分类器训练错误率:15.71%
17 datArr, labelArr = ab.loadDataSet('horseColicTraining2.txt')
18 #50 表示分类器个数最大值(如果差错率不为0,就表示分类器个数)
19 classifierArray = ab.adaBoostTrainDS(datArr, labelArr, 50)
20 
21 
22 #5个分类器测试错误数:17  测试错误率:25.37%
23 #10个分类器测试错误数:16  测试错误率:23.88%
24 #50个分类器测试错误数:14  测试错误率:20.89%
25 #100个分类器测试错误数:15  测试错误率:22.38%
26 #500个分类器测试错误数:17  测试错误率:25.37%
27 testArr, testLabelArr = ab.loadDataSet('horseColicTest2.txt')
28 prediction10 = ab.adaClassify(testArr, classifierArray)
29 errArr = np.mat(np.ones((np.shape(testArr)[0], 1)))
30 errSum = errArr[prediction10 != np.mat(testLabelArr).T].sum()
31 print ("测试错误数:%d"% errSum)
32 print ("测试错误率:%f"% float(errSum/np.shape(testArr)[0]))
测试代码

运行结果

机器学习之AdaBoost原理与代码实现_第2张图片

机器学习之AdaBoost原理与代码实现_第3张图片

机器学习之AdaBoost原理与代码实现_第4张图片

如果将分类器数目设定为1 - 500之前不同的数字,并运行上述过程。这时,得到的结果如下所示:

机器学习之AdaBoost原理与代码实现_第5张图片

由上表可以看出,测试错误率在达到了一个最小值之后又开始上升了,这类现象称之为过拟合(overfitting)。理论上,

AdaBoost是不会存在过拟合的,只会到达一个最小值后趋于稳定。这里是因为数据集的问题。

参考文献

    《机器学习实战》

    《统计学习方法》

     知乎:https://zhuanlan.zhihu.com/p/23987221

     博客:https://blog.csdn.net/Mbx8X9u/article/details/78211995
 
 
 
 

 不要让懒惰占据你的大脑,不要让妥协拖垮了你的人生。青春就是一张票,能不能赶上时代的快车,你的步伐就掌握在你的脚下。

你可能感兴趣的:(机器学习之AdaBoost原理与代码实现)