当前位置: 首页 > 网络应用技术

机器学习 - 决策树python真实战争的回归(预测泰坦尼克号的生存)(3)

时间:2023-03-08 02:15:46 网络应用技术

  本文使用一种简单的理解方式来解释分类树中的返回树,并在“一个维度返回图像”和“泰坦尼克号幸存者预测”的两个示例中说明了算法的原理。

  以下是本文的大纲:

  1个决策者

  1.1重要参数,属性和接口标准

  1.2交叉验证

  2示例:一个维度回归的图像图

  3示例:泰坦尼克号幸存者的预测

  4决策树的优点和缺点

  5附录

  5.1分类列表

  5.2分类树属性列表

  5.3分类树连接列表

  首先,让我们看一下Sklearn中这个图书馆的样子:

  class sklearn.tree.decisiontreeeeegressor(criterion ='mse’,splitter ='best',max_depth = none,

  min_samples_split = 2,min_samples_leaf = 1,min_weight_fraction_leaf = 0.0,max_features = none,

  random_state = none,max_leaf_nodes = none,min_impurity_decrease = 0.0,min_impurity_split = none,presort = false)

  如果您阅读了有关此博客决策树的前两篇文章,您会发现

  几乎所有参数,属性和接口与分类树完全相同。应该注意的是,在返回树中,标签分布是否平衡没有问题,因为

  没有类似class_weight的参数。

  让我们介绍重要参数,属性和接口

  对分支的质量有三种类型的支持分支的质量:有三种类型的支持:

  1)输入“ MSE”以使用平均正方形误差平方误差(MSE)。父节点和叶节点之间的权益误差之间的差异将用作

  特征选择的标准是,该方法是通过使用叶节点的平均值来最大程度地减少L2损失。

  2)输入“ Friedman_mse”以使用Ferdeman的平均正方形误差。该指标使用弗里德曼在潜在分支之后对方误差的改进。

  3)输入具有绝对平均误差MAE(平均绝对误差)的“ MAE”。该指标使用叶节点的中位数来最大程度地减少L1损失损失损失损失

  属性中最重要的事情仍然是功能重要性,该接口仍然是应用,fifit,预测,得分的核心。

  其中,我们必须看看Mae是什么:

  说明:我们将数据集分为n个部分,将其中之一作为测试机,其余的是训练集,以便每个部门都计算出精度EI,最后我们将平均值归功于最后一个。模型测量结果。

  如果我们使用代码来实现此过程可能会很麻烦,但是Sklearn已经打包了我们,我们可以直接使用它。

  让我们介绍如何使用Sklearn进行交叉验证:

  首先,我们导入相关模块:

  然后我们进行交叉验证:

  说明:我们可以通过每个交叉验证获得分数。

  第一个参数是实例化模型。第二个参数是完整的数据集。第三参数是完整数据集的标签。第四参数代表交叉验证的数量,通常为5。第五参数是指得分指示器交叉验证。

  接下来,我们去了两个维平面,观察决策树如何与曲线结合在一起。

  我们使用返回树适合正弦曲线并添加一些噪音来观察返回树的性能。

  首先导入包:

  然后,我们开始创建一个数据集:

  这四行代码已在更详细的注释中进行。如果尚不清楚,请百多了解每个功能的作用并进行实验。

  然后,我们绘制一个好数据以查看:

  说明:这些噪声等同于我们通常进行实验时遇到的一些不良数据。

  在这里,我们建立了两个模型,目的是查看可以通过不同的拟合效果获得哪些结果(max_depth不同)。

  好吧,现在该模型已经训练有素。现在,我们必须找到一个数据来训练并查看模型的效果:

  我们在图片上绘制数据图,模型1和模型2的结果:

  说明:我们可以清楚地看到,当max_depth为2时,效果非常好。当max_depth为5时,该模型将更适合数据,但是结果不令人满意。图片夸大了吗?这意味着噪声受到了更大的影响。

  泰坦尼克号的沉没是世界上最严重的海事事故之一。今天,我们可以预测谁可以通过今天的机密树模型成为幸存者。

  该数据集带有https://www.kaggle.com/c/titanic。将数据组件提供给所有具有代码的人。您可以在下载页面上获取它。

  首先,我们导入所需的库:

  然后,我们导入数据集,并查看数据集的样子:

  上面的功能可以将数据浓度的前N线取出以显示它,默认值5。

  当然,在获取数据集后,要处理它,请以本质去除滴度!

  它更“美丽”!

  让我们开始建模:

  完成训练和测试集后,我们的培训集和测试集的索引将变得混乱,因此我们必须对其进行纠正。

  让我们制作模型:

  本文首先将MAX_DEPTH作为构建学习曲线的示例。我们将MAX_DEPTH用作水平轴,而得分得分作为垂直轴图。该图包含训练集和测试集的两条曲线。

  可以看出,当max_depth越来越大时,模型的过度拟合程度变得越来越严重。最好的一点是接近3。可以通过实验知道最大的分数为0.81778。这个分数仍然不是这种情况。

  因此,我们必须找到最合适的修剪方案(也就是说,每个参数的最佳集合)。我们是否希望我们像max_depth这样的一个人绘制图片?那个工作负载是巨大的!

  当然不是!

  因为有很多参数可以在纸上切割的步骤中进行调整,所以如何找到最佳参数组合是一个问题。GridSearchCV解决了这个问题。

  GridSearchCV,其存在的含义是自动调整参数。只要注入参数,就可以给出优化的结果和参数。但是,此方法适用于小型数据集。一旦数据的数据启动,就很难获得结果。

  目前,您需要移动头脑。当数据量相对较大时,您可以使用快速调整方法-Coordinates降低。实际上是一种贪婪的算法:采用对模型产生最大影响的当前参数直到优化;

  采取下一个影响最大参数的参数调整,直到调整所有参数为止。

  这种方法的缺点是,它可以调整为本地最佳而不是全球和最好的,但是面对巨大的努力,巨大的优势,尝试一下,然后使用装袋进行优化。

  本文使用此方法来处理模型,其中CV值设置为10,即10个交叉验证:

  在这一点上,决策树的整个内容都完成了,然后将新算法组织起来。

  本文参考教程:CAI CAI的SK-LARN课程

  如果有不适当的写作或不正确的地方,我希望读者将包含更多

  如果您不了解上述内容,则可以留言并与Mao Mao讨论以共同取得进展!