当前位置: 首页 > article >正文

基于决策树和随机森林的鸢尾花种类预测

  1. sklearn中与决策树分类有关的函数是DecisionTreeClassifier函数,本次实验主要使用DecisionTreeClassifier,集成学习由RandomForestRegressor函数指定若干棵决策树。使用这两种函数默认参数。

  1. 指定决策树算法。使用criterion="entropy"(信息熵)、criterion=”gini”(CART算法),同时修改max_depth的值分选择2和5进行实验。以及使用20棵和50棵决策树的随机森林进行实验。

3. 使用标准化后的数据进行模型的训练,比较模型的性能。

4. 画图查看决策树深度和错误率之间的关系,观察是否存在过拟合现象:

5.尝试不同的剪枝参数训练模型,对结果进行比较,画出准确率随深度的变化图:

(剪枝参数:max_depth:限制树的最多分层,适用于高维低量样本,分一层需要的样本就多一倍,一般从3开始试。与这个参数类似的还有:

min_samples_leaf: 一个节点分支后的子节点上至少包含多少的训练样本数量。

min_samples_split :一个节点上至少包含多少训练样本数量。)

6.打印预测值和真实值之间的图像(一张图即可)。

7.使用graphviz进行决策树的可视化(gini和entropy各一张)

  • 结果分析

根据上述实验结果对比不同的函数,不同剪枝方法,不同类型的决策树方法和随机森林的实验结果,可以根据网格搜索得出最佳结果。

使用标准化后的数据进行模型的训练,比较模型的性能,并画图查看决策树深度和错误率之间的关系,观察是否存在过拟合现象。

代码1构建决策树随机森林结果:

代码2使用不同决策方式、深度、森林数量的模型结果如下

代码3标准化后模型结果如下:

代码4查看深度与错误率的关系结果如下:

代码5查看不同剪枝策略对决策树模型结果准确率的影响结果:

代码6查看max_depth剪枝后预测值和真实值的差异结果:

代码7使用graphviz可视化决策树预测过程(分别使用entropy和gini)结果如下:

结果分析

    从代码1的运行结果中我们就可以看到决策树和随机森林即使使用默认参数,对鸢尾花数据集的预测结果也很好。

通过调整模型参数,我们可以得到不同的分类结果,具体看到代码2的结果,不管是使用信息增益还是gini指数来评估决策树分类结果,对于鸢尾花数据,决策树深度为5的时候的模型结果都会优于深度为3的时候的准确率。而对于随机森林来说,森林里树木数量为20和50的结果都是100%的预测准确率,可见随机森林的分类效果较优,参数的调整对分类结果的影响不大,甚至可能导致过拟合。

对比代码3运行结果,可以看到标准化后模型的准确率没有明显变化,因为它们是基于特征值而非其缩放来拆分数据,它们可以在没有标准化的情况下良好运行,标准化通常对依赖距离度量的算法更有益,比如 k-最近邻或支持向量机。

通过代码4的运行结果我们可以看到,不管是训练集还是测试集,在depth=2以前该参数对模型准确率的影响都是比较大的,当depth>2时影响变小,而当训练集的决策树深度达到6的时候,模型的准确率就已经来到了100%,当测试集决策树深度达到3时,模型的准确率就已经来到了100%。

通过代码5的运行结果可以看出,min_samples_leaf和min_samples_split两种剪枝策略在当前数据集的决策树模型下作用较大,让模型在depth=1的时候就已经达到了100%的准确率,而调整max_depth参数至3的时候模型才达到100%的准确率。

从代码6运行结果我们可以看出,当max_depth=2的时候,决策树并不能全部预测正确,比如第五个数据他就把类别1的样本预测为类别2了。

通过代码7的运行结果,我们可以很清晰的看出决策树使用entorpy和gini两种方式进行鸢尾花数据分类的决策过程。其中petal_length是该分支的花瓣长度,第二行gini/entropy是决策方法, samples是数据集大小,value是对数据特征属于各个类别的概率数量比例,class表示该节点的预测结果。

提高决策树、随机森林模型准确率的可能方法。

1.调整超参数

       比如调整决策树的深度,这里决策树采用depth=5的效果就比depth=2的效果好,同理调整随机森林中树的数量也有助于提高模型性能,超参数的调整可以引入网格搜索来选择模型的最佳值。

2.特征工程

       做好数据提取工作和数据预处理工作,比如缺失值处理、分层采样等。也可以对数据进行标准化归一化把数据变为更适合该算法的数据。使用PCA降维或者随机森林的 feature_importances_ 属性,识别哪些特征对模型的性能影响最大,减少其他权重较小的特征的影响。也可以使用预剪枝和后剪枝策略调整决策树分支,防止过拟合

3.集成学习

调整随机森林参数: 考虑调整随机森林的其他参数,如每棵树的最大深度、每个节点的最小样本拆分数量等,以优化性能。

尝试其他集成模型: 除了随机森林,还可以尝试其他集成学习方法,如梯度提升树(Gradient Boosting)等。

4.损失验证

       使用交叉熵损失函数或者均方误差来评估模型。防止过拟合,并获得对模型泛化能力的更好估计


http://www.kler.cn/a/568870.html

相关文章:

  • CCF-CSP认证 202104-1灰度直方图
  • 【星云 Orbit-STM32F4】06. 串口密码:USART 数据传递
  • 大模型技术:重塑未来的力量
  • 【Android】类加载器热修复-随记(二)
  • SwiftUI之状态管理全解析
  • 大语言模型学习--LangChain
  • webpack5在生产环境屏蔽掉控制台打印 失效处理
  • 阿里云服务器宝塔终端如何创建fastadmin插件
  • 神经网络之RNN和LSTM(基于pytorch-api)
  • 基于图神经网络的会话推荐经典论文
  • 一键安装Mysql部署脚本之Linux在线安装Mysql,脚本化自动化执行服务器部署(附执行脚本下载)
  • 在.net中,async/await的理解
  • 微服务组件详解——sentinel
  • centos7使用rpm包安装mysql5.6和mysql8.0
  • Scala的match表达式的基本简单介绍
  • Redis的持久化-RDBAOF
  • JeeWMS graphReportController.do SQL注入漏洞复现(CVE-2025-0392)
  • Android嵌套滑动造成的滑动冲突原理分析
  • 补题蓝桥杯14届JavaB组第4题
  • 搭建elasticsearch集群,8.17.0版本