我有以下数据集用于预测团队是否赢得比赛,其中每一行对应一个训练示例,每列对应一个特定的特征。我希望决策树根据每个列中的每个特征使用拆分来确定最终的回归值:
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之间有什么区别?
答案 0 :(得分:2)
sci-kit learn默认使用gini杂质度量(参见Giny impurity, Wikipedia),以便在决策树中拆分分支。这通常很有效,除非您对数据有很好的了解以及如何进行拆分,否则最好使用Sci-kit学习默认值。
关于 max_depth :这是树的最大深度,您不希望它非常大,因为您可能会过度拟合训练数据。
关于 max_features :每次分割时,您的训练算法都会查看许多特征,并采用具有最佳度量的特征(在本例中为gini杂质),并根据其创建两个分支到那个功能。每次查看所有功能的计算量都很大,所以你可以检查其中的一些功能。 max_features 是每次在节点上创建一对分支时看到的功能数量。