决策树分割

我有一个用于预测团队是否赢得比赛的数据集,其中每一行对应一个训练样例,每一列对应一个特定特征。我希望决策树基于每一列中的每个特征进行分割,以确定最终的回归值:

 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 learn的决策树分类器是否有帮助:

regr_2 = DecisionTreeRegressor(max_depth=6)regr_2.fit(Train, Result)

我还看到了这个关于决策树的教程,我也想知道在这种情况下我是否应该从头开始构建决策树。sci-kit learn函数是如何创建分割的?它是否执行我打算做的事情?请告诉我我的方法中可能存在的缺陷。

另外,max_features和max_depth有什么区别?


回答:

Sci-kit learn默认使用基尼不纯度度量(见基尼不纯度,维基百科)来分割决策树的分支。这种方法通常效果很好,除非你对数据有很好的了解并且知道如何进行分割,否则最好使用Sci-kit learn的默认设置。

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

关于max_features:每次进行分割时,你的训练算法会查看一定数量的特征,并选择其中度量最优的特征(在本例中为基尼不纯度),然后根据该特征创建两个分支。每次查看所有特征在计算上是繁重的,因此你可以只检查其中的一些。max_features则是每次在节点上创建一对分支时查看的特征数量。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注