[Hands On ML] 6. 决策树

文章目录

    • 1. 训练与可视化
    • 2. 分类预测
    • 3. 模型参数
    • 4. 回归
    • 5. 不稳定性

本文为《机器学习实战:基于Scikit-Learn和TensorFlow》的读书笔记。
中文翻译参考

《统计学习方法》决策树笔记

决策树可以分类,也可以回归,还有多输出任务
是随机森林的基础组成部分

1. 训练与可视化

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
iris = load_iris()
X = iris.data[:, 2:] # petal length and width 
y = iris.target
tree_clf = DecisionTreeClassifier(max_depth=2)
tree_clf.fit(X, y)
from sklearn.tree import export_graphviz
export_graphviz(tree_clf,out_file="iris_tree.dot",feature_names=iris.feature_names[2:],class_names=iris.target_names,rounded=True,filled=True)

安装好Graphviz,在cmd下输入 dot -Tpng iris_tree.dot -o iris_tree.png # cmd,生成决策树可视化图片

在这里插入图片描述

2. 分类预测

决策树特性:不需要太多的数据预处理,尤其是不需特征缩放或归一化

tree_clf.predict_proba([[5,1.5]]) 
# array([[0.        , 0.90740741, 0.09259259]])
tree_clf.predict([[5,1.5]])  
# array([1])
  • 预测时间复杂度:O(log⁡2m)O(\log_2m)O(log2m),与特征数量无关,m为样本数
  • 训练时间复杂度:O(nmlog⁡m)O(nm\log m)O(nmlogm) ,n 为特征数量max_features

通常,算法使用 Gini 不纯度来进行检测,也可以设置为entropy

  • 基尼指数计算稍微快一点,SKlearn默认值
  • 基尼指数会趋于在树的分支中将最多的类隔离出来
  • 熵指数趋向于产生略微平衡一些的决策树模型

3. 模型参数

决策树不需要事先设置参数,不添加约束的决策树模型,能很好的拟合数据,容易过拟合

  • min_samples_split(节点在被分裂之前必须具有的最小样本数)
  • min_samples_leaf(叶节点必须具有的最小样本数)
  • min_weight_fraction_leaf(和min_samples_leaf相同,但表示为加权总数的一小部分实例)
  • max_leaf_nodes(叶节点的最大数量)
  • max_features(在每个节点被评估是否分裂的时候,具有的最大特征数量)
  • 增加min_* hyperparameters或者减少max_* hyperparameters会使模型正则化。

使用假设检验进行剪枝

在这里插入图片描述
上图左侧没有剪枝,模型过拟合了

4. 回归

在这里插入图片描述
在这里插入图片描述
同样需要设置合理的参数,左侧过拟合了

5. 不稳定性

  • 决策树 对旋转很敏感,可以使用 PCA 主成分分析,缓解

在这里插入图片描述

  • 决策树 对训练数据的微小变化非常敏感,随机森林可以通过多棵树的平均预测值限制这种不稳定性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转载】KMP算法详解

如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段。 我们这里说的KMP不是拿来放电影的(虽然我很喜欢 这个软件),而是一种算法。KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符…

LeetCode MySQL 1459. 矩形面积

文章目录1. 题目2. 解题1. 题目 表: Points ------------------------ | Column Name | Type | ------------------------ | id | int | | x_value | int | | y_value | int | ------------------------ id 是该表主键. 每个点都表示…

mesh和wifi中继的区别_小米官方科普路由器Mesh功能,它和普通的中继有什么区别...

原标题:小米官方科普路由器Mesh功能,它和普通的中继有什么区别不知道各位在选购路由器的时候会不会关注路由器的Mesh组网功能,也可能有许多小伙伴在购买选购路由器的时候没有很关注过相关的功能和参数。而最近,小米就将其旗下的AX…

STP分析--保险公司客户分类分析(采用SPSS进行分析)

文章目录研究目的:精准营销研究内容:客户分类维度数据获取与处理设计调查问卷及确定调研计划数据处理数据分析架构客户细分目标客户选择目标客户定位数据分析与输出结果确定分类维度分类维度的消减适应性检验因子提取因子旋转因子命名计算因子得分设置因…

详解Objective-C消息传递机制

Objective-C获取消息工作机制是本文要介绍的内容,看name mangling的时候,也讲到了Objective-C的name mangling,于是又重新读了一下Objective-C 2.0 programming Language以及Objective-C 2.0 Runtime Reference里的相关内容,自己归纳一下 。…

vuedraggable示例_vuedraggable快速入门

value和list这两个都可以给一个draggable注入数据源:/*value注入数据源*/export default {data() {return {list:[{name:aaa,id:1,},{name:bbb,id:2,}]};}}/*list注入数据源头*/export default {data() {return {list:[{name:aaa,id:1,},{name:bbb,id:2,}]};}}它们的…

LeetCode MySQL 1468. 计算税后工资

文章目录1. 题目2. 解题1. 题目 Salaries 表: ------------------------ | Column Name | Type | ------------------------ | company_id | int | | employee_id | int | | employee_name | varchar | | salary | int | ----------…

ETL详解

ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。 ETL是BI项目重要的一个环节。 通常情况下,在BI项目中ETL会花掉整个项目至少1/3的时…

博客园

为更好的分享本人的博客,本人在博客园地址:http://www.cnblogs.com/blogyuan/,里面也有博文,本博客将不定期将两个博客上的博文同步,欢迎转载! 转载于:https://www.cnblogs.com/blogyuan/archive/2012/11/0…

LeetCode MySQL 1421. 净现值查询

文章目录1. 题目2. 解题1. 题目 表: NPV ------------------------ | Column Name | Type | ------------------------ | id | int | | year | int | | npv | int | ------------------------ (id, year) 是该表主键. 该表有…

apache大师+伪静态_Apache开启伪静态示例

Apache开启伪静态示例环境:系统 WindowsApache 2.2加载Rewrite模块:在conf目录下httpd.conf中找到LoadModule rewrite_module modules/mod_rewrite.so这句,去掉前边的注释符号“#”,或添加这句。允许在任何目录中使用“.htaccess”…

从入门到深入Fiddler 2 (二)

AutoResponder 快速引用 今天我们来看一下Fiddler的AutoResponder选项卡的强大功能。 Fiddler的AutoResponder 选项卡允许你使用本地硬盘的文件来作为返回内容,而不是把请求发往服务器。 创建AutoResponder 规则。 使用AutoResponder选项卡,你可以创建一…

探索性数据分析EDA及数据分析图表的选择

文章目录一、探索性数据分析EDA二、数据分析图表的选择一、探索性数据分析EDA 探索性数据分析(Exploratory Data Analysis,简称EDA),指对数据分析的过程中尽量不加入先验假设,而是通过作图表和统计等方式来探索数据结构和规律。 在EDA中你可…

LeetCode MySQL 608. 树节点

文章目录1. 题目2. 解题1. 题目 给定一个表 tree,id 是树节点的编号, p_id 是它父节点的 id 。 ---------- | id | p_id | ---------- | 1 | null | | 2 | 1 | | 3 | 1 | | 4 | 2 | | 5 | 2 | ---------- 树中每个节点属于以下三种类…

xshell 打开文件跳转到最后_如何在Xshell中打开Xftp

Xftp作为远程文件传输软件,与Xshell终端模拟器同属于Xmanager,这两款软件经常配合使用,用来给远程服务器上传文件非常方便。那么在使用Xshell的时候怎样打开Xftp呢?下面就来给大家介绍具体操作技巧。如果安装了一、XShell中打开如…

网络资源-深入剖析Binding2(学习)

WPF Binding WPF里分三种Binding:Binding, PriorityBinding, MultiBinding,这三种Binding的基类都是BindingBase,而BindingBase又继承于MarkupExtension Binding: 提供对绑定定义的高级别访问,绑定将绑定目标对象&…

LeetCode MySQL 1045. 买下所有产品的客户

文章目录1. 题目2. 解题1. 题目 Customer 表: ---------------------- | Column Name | Type | ---------------------- | customer_id | int | | product_key | int | ---------------------- product_key 是 Product 表的外键。Product 表&#xff1…

统计学中常用的数据分析方法汇总

文章目录一、描述统计二、假设检验三、信服分析四、列联表分析五、相关分析六、方差分析一、描述统计 描述统计是通过图表或数学方法,对数据资料进行整理、分析,并对数据的分布状态、数字特征和随机变量之间关系进行估计和描述的方法。描述统计分为集中…

java组装树状结构数据集合_JAVA构建List集合为树形结构

package com.zving.tree;import java.util.ArrayList;import java.util.List;/*** 树形结构实体类* author clove*/public class Node {private int id;private int pid;private String name;private String type;private List children new ArrayList<>();public Node(…

过拟合(overfitting)和欠拟合(underfitting)出现原因及如何避免方案

文章目录欠拟合一、什么是欠拟合&#xff1f;二、欠拟合出现原因三、解决欠拟合(高偏差)的方法过拟合一、什么是过拟合&#xff1f;二、过拟合出现原因三、解决过拟合(高方差)的方法欠拟合 一、什么是欠拟合&#xff1f; 欠拟合是指模型不能在训练集上获得足够低的误差。换句…