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

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

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

相关推荐
张彦峰ZYF7 小时前
越过边界之前:Reward Seeker 实验如何改写智能体安全的时间逻辑
人工智能·ai agent·anthropic·智能体安全·reward seeker·“控制评价过程”泛化跨领域策略·envbom
拓恒技术7 小时前
无人机巡检AI算法的工程化落地:从需求到交付的5个核心环节
人工智能·算法·无人机
晨曦中的暮雨8 小时前
限流算法——固定窗口、滑动窗口、漏桶、令牌桶
java·开发语言·算法
怕浪猫8 小时前
Claude Code vs Codex:Computer Use 实现原理深度拆解
算法·面试·github
学长毕设9 小时前
基于SpringBoot的青少年编程学习平台系统-附源码
spring boot·学习·青少年编程
罗西的思考10 小时前
AI 时代的 “房谋杜断”:如何培养能力、品味与判断力
人工智能·算法·机器学习
淡海水10 小时前
07-02-源码-.NET Core GC分配路径
算法·unity·c#·.netcore·gc·1024程序员节
字节跳动视频云技术团队10 小时前
720P 直升 8K,解密 2026 抖音美好奇妙夜巨幕超分黑科技
人工智能·音视频开发
打工仔折腾 AI10 小时前
在 Ubuntu ARM64 部署 Q1 V3.0 MuJoCo 模型:加载、单步推理与执行器响应解析
linux·运维·人工智能·python·深度学习·ubuntu·性能优化
逐米时代11 小时前
从试点验证到协同深化:制造业AI转型三年路线图设计方法
人工智能