我有以下数据集,用于预测团队是否赢了一场比赛,其中每一行对应于一个训练示例,每一列对应于特定的特性。在确定最终回归值时,我希望使决策树使用基于每一列中的每个特性的分割:
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‘(wins)或'0’(loses)。这不能转化为一个分类问题,因为概率是一个重要的中间步骤。
我想知道使用sci-kit学习决策树分类器是否能直接帮助:
regr_2 = DecisionTreeRegressor(max_depth=6)
regr_2.fit(Train, Result)我还看到了关于决策树的这教程,并想知道在这种情况下是否应该从底层构建决策树。sci学习功能是如何创建分裂的?它实现了我想做的事吗?请让我知道我的方法可能存在的缺陷。
另外,max_features和max_depth有什么区别?
发布于 2018-04-17 14:37:02
Sci学习默认使用吉尼杂质度量(参见吉尼杂质维基百科)来分割决策树中的分支。这通常工作得很好,除非您对数据有很好的了解,并且应该如何进行拆分,否则最好使用Sci-kit学习默认设置。
关于max_depth:这是树的最大深度,您不希望它太大,因为您可能会超出训练数据。
关于max_features:每次出现分裂时,您的训练算法都会查看一些特性,并使用最优度量(在本例中是基尼杂质),并根据该特性创建两个分支。每一次查看所有的功能都是计算量很大的,所以您只需检查其中的一些。然后,max_features是每次在节点上创建一对分支时所看到的特性数。
https://stackoverflow.com/questions/49878985
复制相似问题