Python 决策树分裂

Python 决策树分裂,python,machine-learning,decision-tree,Python,Machine Learning,Decision Tree,我有以下数据集用于预测一支球队是否赢得一场比赛,其中每一行对应一个训练示例,每一列对应一个特定特征。我希望决策树在确定最终回归值时,根据每个列中的每个特征使用分割: 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'

我有以下数据集用于预测一支球队是否赢得一场比赛,其中每一行对应一个训练示例,每一列对应一个特定特征。我希望决策树在确定最终回归值时,根据每个列中的每个特征使用分割:

 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工具包学习决策树分类器是否能直接帮助:

regr_2 = DecisionTreeRegressor(max_depth=6)
regr_2.fit(Train, Result)
我还看到了关于决策树的教程,还想知道在这种情况下是否应该从头开始构建决策树。sci工具包学习功能是如何创建拆分的?它是否执行了我打算做的事情?请让我知道我的方法中可能存在的缺陷


此外,max_features和max_depth之间有什么区别?

Sci kit learn默认使用基尼杂质度量(请参阅),以便在决策树中拆分分支。这通常工作得很好,除非您对数据有很好的了解以及如何进行拆分,否则最好使用Sci工具包学习默认值

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


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

Sci kit learn默认使用基尼杂质度量(请参阅),以便在决策树中拆分分支。这通常工作得很好,除非您对数据有很好的了解以及如何进行拆分,否则最好使用Sci工具包学习默认值

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


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

这是一个分类问题,而不是回归问题。因此,您可以使用DecisionTreeClassifier来代替我的主要目的是预测我决定他们是否获胜的概率。抱歉说不清楚。因此我不能使用DecisionTreeClassifier。不管怎样,这仍然是一个分类问题,你可以使用
DecisionTreeClassifier
,然后使用
predict\u Probaba()
而不是
predict()
,以获得概率而不是类。@Shubashree你似乎忽略了大多数分类器,包括决策树,实际上会产生一个概率输出,然后根据阈值将其转换为“硬”类成员身份(0/1)…@Shubashree我回答了你的问题吗?这是一个分类问题,而不是回归问题。因此,您可以使用DecisionTreeClassifier来代替我的主要目的是预测我决定他们是否获胜的概率。抱歉说不清楚。因此我不能使用DecisionTreeClassifier。不管怎样,这仍然是一个分类问题,你可以使用
DecisionTreeClassifier
,然后使用
predict\u Probaba()
而不是
predict()
,以获得概率而不是类。@Shubashree你似乎忽略了大多数分类器,包括决策树,实际上会产生一个概率输出,然后根据阈值将其转换为“硬”类成员身份(0/1)…@Shubashree我回答了你的问题吗?