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

  1. sklearn中与决策树分类有关的函数是DecisionTreeClassifier函数,本次实验主要使用DecisionTreeClassifier,集成学习由RandomForestRegressor函数指定若干棵决策树。使用这两种函数默认参数。
  1. 指定决策树算法。使用criterion="entropy"(信息熵)、criterion="gini"(CART算法),同时修改max_depth的值分选择2和5进行实验。以及使用20棵和50棵决策树的随机森林进行实验。

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

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

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.损失验证

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

相关推荐
不正经学生8 分钟前
C语言结构体:自定义数据类型,让变量打包出行
java·c语言·开发语言·数据结构·算法
极客互动API8 分钟前
企业微信 iPad 协议服务搭建与 AI 回调实战
网络·汇编·人工智能·微信·企业微信·ipad
空堂与归9 分钟前
token畅享?FreeToken单卡5090跑满血DeepSeek_V4Flash
人工智能·free token
AI码农小姐姐9 分钟前
AI漫剧用什么软件制作?知漫剧小说导入成片教程
人工智能
ycjunhua11 分钟前
Spring AI 2.0 GA:ToolCallingAdvisor 重构与 Java Agent 新范式
java·人工智能·spring
二川bro39 分钟前
零门槛上手DeepSeek Harness,从零自制arxiv搜索插件
人工智能
cxr8281 小时前
数学的本质:关系、模式与不变量的结构世界
人工智能·算法·机器学习
东莞和裕包装1 小时前
如何管控广州定制纸箱生产中的啤切精度与印刷色差质量问题
大数据·运维·网络·人工智能
AIDANHANG1 小时前
放开靠时间戳对日志前先核请求ID跨服务传播与采样关联
前端·人工智能
牛肉胡辣汤1 小时前
手握实战经验,分享AI工程落地的踩坑与收获
人工智能