Python决策树几乎总是选择相同的类

2024-03-28 15:30:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用Python实现一个决策树算法,但遇到了一些问题。我举了一个实施的例子:

http://machinelearningmastery.com/implement-decision-tree-algorithm-scratch-python/

我的类是离散类,我的数据如下所示:

x1             x2                y 
0.247224       0.441384          3.0
0.283196       0.212166          5.0
0.374300       0.151103          6.0
0.181024       0.232722          4.0
0.376329       0.176915          6.0
0.122801       0.583578          1.0
...            ...               ...
0.905578       0.117259          8.0
0.931590       0.111953          8.0

其中2个属性从0到1进行规格化,第一个属性随着类号的增加而增加,第二个属性随着类号的增加而减少。 数据集包含大约2000条记录。你知道吗

我实现了上面链接的算法,该算法使用基尼指数来评估拆分,我得到了意想不到的结果。你知道吗

当创建树并尝试与数据集进行比较时,我的预测值几乎总是类“4”(大约95%的时间)。你知道吗

我测试的最大树深度为20,最小树大小为20,我尝试了许多设置,它们都会给出几乎总是预测4的相同结果。你知道吗

当我用教程中的print\u tree功能打印树时,它给了我这样一个信息:

[X2 < 0.030]
 [8.0]
 [X1 < 0.932]
  [X1 < 0.001]
   [2.0]
   [X1 < 0.021]
    [X1 < 0.018]
     [1.0]
     [1.0]
    [X2 < 0.982]
     [X1 < 0.022]
      [3.0]
      [X1 < 0.025]
       [2.0]
       [X1 < 0.028]
        [1.0]
        [X1 < 0.028]
         [2.0]
         [X1 < 0.028]
          [3.0]
          [X1 < 0.029]
           [1.0]
           [X1 < 0.029]
            [2.0]
            [X1 < 0.032]
             [1.0]
             [X1 < 0.034]
              [2.0]
              [X1 < 0.035]
               [1.0]
               [X1 < 0.036]
                [2.0]
                [X1 < 0.037]
                 [1.0]
                 [X2 < 0.825]
                  [X2 < 0.758]
                   [X2 < 0.718]
                    [4.0]
                    [3.0]
                   [2.0]
                  [3.0]
     [1.0]
  [8.0]

我们可以清楚地看到树中发生了错误,而且几乎总是到达最下面的情况(4)。你知道吗

我不是在找人给我一个解决方案,我只是想了解我是否正确理解算法,以及它是否可以应用于我的数据。你知道吗

谢谢!你知道吗


Tags: 数据com算法决策树treehttp属性implement