我具有以下数据集,用于预测团队是否会赢得比赛,其中每一行对应一个训练示例,每一列对应一个特定功能。我希望决策树根据确定最终回归值的每一列中的每个功能使用拆分:

 Train=
 [['0' '0' '1' '-1' '8' '-9']
 ['-15' '0' '0' '18' '7' '11']
 ['-8' '0' '0' '8' '2' '6']
 ...
 ['11' '0' '2' '-15' '-3' '-12']
 ['3' '0' '-1' '-16' '-15' '-1']
 ['-3' '0' '0' '-6' '4' '-10']]

Result=
[1,1,0,...,1]


基于输出回归值(除了它们获胜的几率而已),我应用阈值函数将输出分类为“ 1”(获胜)或“ 0”(失败)。由于概率是重要的中间步骤,因此不能将其转化为分类问题。

我想知道使用sci-kit学习决策树分类器是否直接有帮助:

regr_2 = DecisionTreeRegressor(max_depth=6)
regr_2.fit(Train, Result)


我还看到了有关决策树的this教程,并且还想知道在这种情况下是否应该从头开始构建决策树。 sci-kit学习功能如何创建拆分?它执行我打算做的事吗?请让我知道我的方法中可能存在的缺陷。

另外,max_features和max_depth有什么区别?

最佳答案

默认情况下,Sci-kit learning使用基尼杂质度量(请参见Giny impurity, Wikipedia)来将分支拆分成决策树。这通常效果很好,除非您对数据以及如何进行拆分有足够的了解,所以最好使用Sci-kit学习默认值。

关于max_depth:这是树的最大深度,您不希望它太大,因为您可能会过度拟合训练数据。

关于max_features:每次分割时,您的训练算法都会查看多个特征,并采用最佳度量(在本例中为gini杂质),并根据该特征创建两个分支。每次都查看所有功能的计算量很大,因此您只需检查其中的一些功能即可。那么max_features就是您每次在节点上创建一对分支时要查找的功能数量。

关于python - 决策树拆分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49878985/

10-12 21:16