在上一篇博文《决策树的sklearn实现》中,我们建立了一棵完整的决策树,但是如果在建立模型时不设置random_state的数值,score会在某个值附近波动,引起画出来的每一棵树都不一样。它为什么会不稳定呢?如果使用其他数据集,它还会不稳定吗?
无论决策树模型如何进化,在分支上的本质都还是追求某个不纯度相关指标的优化,而不纯度是基于结点计算的,也就是说,决策树在建树时,是靠优化节点来追求一棵优化的树,但最优的结点能够保证最优的树吗?集成算法被用来解决这一问题:sklearn表示,既然一棵树不能保证最优,那就建更多的不同的树,然后从中取最好的。怎样从一组数据集中建不同的树?在每次分支时,不用全部特征,而是随机选取一部分特征,从中选取不纯度相关指标最优的作为分支用的结点。这样,每次生成的树也就不同了。

clf = tree.DecisionTreeClassifier(criterion="entropy",random_state=100)
clf = clf.fit(Xtrain, Ytrain)
score = clf.score(Xtest, Ytest) #返回预测的准确度
score

运行结果

0.9814814814814815

random_state & splitter

random_state用来设置分支中的随机模式的参数,默认None,在高维度时随机性会表现更明显,低维度的数据(比如鸢尾花数据集),随机性几乎不会显现。输入任意整数,会一直长出同一棵树,让模型稳定下来。
splitter也是用来控制决策树中的随机选项的,有两种输入值,输入”best",决策树在分支时虽然随机,但是还是会优先选择更重要的特征进行分支(重要性可以通过属性feature_importances_查看),输入“random",决策树在⽀支时会更加随机,树会因为含有更多的不必要信息而更深更大,并因这些不必要信息而降低对训练集的拟合。
这也是防止过拟合的一种方式。
当你预测到你的模型会过拟合,用这两个参数来帮助你降低树建成之后过拟合的可能性。当然,树一旦建成,我们依然是使用剪枝参数来防止过拟合。

clf = tree.DecisionTreeClassifier(criterion="entropy",random_state=30,splitter="random",max_depth=5,min_samples_leaf=5,min_samples_split=10)
clf = clf.fit(Xtrain, Ytrain)
dot_data = tree.export_graphviz(clf,feature_names= feature_name,class_names=["琴酒","雪莉","贝尔摩德"],filled=True,rounded=True)
graph = graphviz.Source(dot_data)
graph

sklearn决策树之random_state splitter相关推荐

  1. 第十二课.sklearn决策树实验

    目录 实验数据 数据分析 sklearn决策树分类 实验数据 本实验基于某信息公司的用户数据,使用决策树和可视化工具进行用户流失分析,从而预测哪类用户更容易流失,帮助公司制定相应的预防措施.实验所需数 ...

  2. sklearn决策树预剪枝

    <老饼讲解机器学习>http://ml.bbbdata.com/teach#102 目录 一.预剪枝即调参 二.调参方法 (1) 默认值预观察生长的树 (2) 参数限制节点过分生长 为预防 ...

  3. 细讲sklearn决策树后剪枝(带例子)

    <老饼讲解机器学习>http://ml.bbbdata.com/teach#103 目录 一.CCP后剪枝简介 二.剪枝操作过程 (1) 查看CCP路径 (2)根据CCP路径剪树 为预防模 ...

  4. sklearn——决策树

    总结sklearn决策树的使用,方便以后查阅. 1.分类决策树   (基于CART树) 原型: 参数: 2.回归分类树 原型: 参数: 3.export_graphviz 当训练完毕一颗决策树时,可以 ...

  5. sklearn模型中random_state参数的意义

    sklearn模型中random_state参数的意义 random_state 意义 使用情况 random_state 意义 例如:在sklearn可以随机分割训练集和测试集(交叉验证),只需要在 ...

  6. sklearn 决策树(分类树、回归树)的 重要参数、属性、方法理解

    文章目录 决策分类树 引入 重要参数 1,criterion 2,splitter 3,max_depth 4,min_samples_leaf 5,min_samples_split 6,max_f ...

  7. sklearn 决策树例子_决策树--规则挖掘应用

    本次主要简单介绍下决策树在风控规则中的简单应用,让读者快速入门.在后续的文章中,会逐一介绍决策树的各种算法原理,如信息增益.ID3算法.C4.5算法.C5.0算法等, 希望感兴趣的朋友可以关注下. 前 ...

  8. wpf展开树节点_回归树分析与sklearn决策树案例,来玩一会

    摘要: 决策树是非常基础的算法,其不仅能够进行分类还可以进行回归处理,也就是回归树.要想提高决策树的性能还需要做好剪枝的工作. 关键词: 回归树,剪枝 1 回归树 之前已经介绍过决策树的基本理论了:这 ...

  9. python机器学习库sklearn——决策树

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 决策树的相关的知识内容可以参考 http://blog.csdn.net/luanpeng825485697/article/deta ...

最新文章

  1. DCN-cs6200 ipv6 isatap 隧道
  2. ruby on rails_我成为了Ruby on Rails和React的贡献者,你也可以
  3. 【裴蜀定理】BZOJ 1441 MIN
  4. mysql设置Tooken过期时间_基于thinkPHP3.2实现微信接入及查询token值的方法
  5. 意念实时转语音!Facebook的非植入式脑机接口,解码准确率达到76%
  6. python从入门到精通学习笔记_Python从入门到精通之基础概念
  7. SQL中的重复记录操作
  8. vc开发soap客户端(方式一)
  9. TIMING_03 时序分析原理
  10. 变量在函数内外的作用域 3
  11. [HNOI2015]开店(树剖+主席树+标记永久化)
  12. 项目管理修炼之道-读书流水
  13. 自动刷新网页脚本_抢不到票?你离idol只差一个大麦抢票脚本。
  14. matlab拟合图形边界,matlab - MATLAB 3D曲线拟合,带有附加边界 - SO中文参考 - www.soinside.com...
  15. P3939数颜色 (主席树)
  16. C# Socket实现两台电脑通信(三)
  17. Luatos学习:Air101点灯
  18. win10 2016企业版激活,遇到非核心版本的计算机问题
  19. 什么是互动触摸屏?它有用途是什么?
  20. 面试心得与总结---BAT、网易、蘑菇街【转载】

热门文章

  1. 妈妈,我会自己上厕所尿尿了!
  2. Matlab 李萨如图模拟_动态模拟李萨如图形形成过程保存为.GIF动图
  3. 电力监控系统生产厂家,电力监控系统设备
  4. 用HTTP协议下载一个MP3文件
  5. JQuery实现广告放映
  6. 2021-11-27 学习的打卡学习第五天(比赛总结/总结失败)
  7. QMS-云质-数字化质量管理-电机行业的数字化质量管理讨论
  8. Java基础知识点整理(2022年最新版)
  9. 20-WWW-FiDo Ubiquitous Fine-Grained WiFi-based Localization for Unlabelled Users via Domain Adaptati
  10. 使用juery使用ajax实现用户注册时的验证