首页 文章

决策树分裂

提问于
浏览
0

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

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有什么区别?

1 回答

  • 2

    默认情况下,Sci-kit学习使用基尼杂质测量(参见Giny impurity, Wikipedia),以便在决策树中拆分分支 . 这通常很有效,除非您对数据有很好的了解以及如何进行拆分,否则最好使用Sci-kit学习默认值 .

    关于max_depth:这是树的最大深度,你不希望它非常大,因为你可能会过度训练训练数据 .

    关于max_features:每次分割时,您的训练算法会查看许多特征并采用具有最佳度量的特征(在本例中为基尼杂质),并根据该特征创建两个分支 . 每次查看所有功能的计算量都很大,所以你可以检查其中的一些功能 . max_features是每次在节点上创建一对分支时查看的功能数 .

相关问题