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

Python决策树几乎总是选择相同的类,python,algorithm,machine-learning,tree,Python,Algorithm,Machine Learning,Tree,我试图用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

我试图用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
其中,两个属性从0到1进行规格化,第一个属性随类号的增加而增加,第二个属性随类号的增加而减少。 该数据集包含大约2000条记录

我实现了上面链接的算法,它使用基尼指数来评估分割,我得到了意想不到的结果

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

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

当我使用教程中的print_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]
[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)

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


谢谢

你训练树的数据是什么?测试的数据是什么。另外,你对每一组有多少第4类观察?您的树可能会超出您的训练数据,这对于决策树来说非常常见。如果是这样的话,你可以尝试或减少你提到的两个参数。@伙计们,我总共有大约3200条记录,我把它们分成2/3,所以2133次训练和1066次测试。班级比例如下:(4.0:768,5.0:759,6.0:596,3.0:532,2.0:331,1.0:159,8.0:50,7.0:33)。“减少”这两个参数是什么意思?谢谢,例如,您可以尝试减小最大树大小。20听起来对你来说太高了。无论如何,决策树并不一定适合您的数据。如果您对学习感兴趣,您可以从经过良好测试的数据集开始,例如Iris。@伙计们,好的,谢谢你们,我将尝试使用不同的参数,并尝试使用Iris数据集进行练习