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我回答了你的问题吗?