决策树分割

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

 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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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