[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,一经查实,立即删除!

相关文章

LeetCode MySQL 1459. 矩形面积

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

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

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

LeetCode MySQL 1468. 计算税后工资

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

LeetCode MySQL 1421. 净现值查询

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

探索性数据分析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 | ---------- 树中每个节点属于以下三种类…

网络资源-深入剖析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…

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

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

LeetCode MySQL 612. 平面上的最近距离

文章目录1. 题目2. 解题1. 题目 表 point_2d 保存了所有点(多于 2 个点)的坐标 (x,y) ,这些点在平面上两两不重合。 写一个查询语句找到两点之间的最近距离,保留 2 位小数。 | x | y | |----|----| | -1 | -1 | | 0 | 0 | …

LeetCode MySQL 1112. 每位学生的最高成绩

文章目录1. 题目2. 解题1. 题目 表:Enrollments ------------------------ | Column Name | Type | ------------------------ | student_id | int | | course_id | int | | grade | int | ------------------------ (student_id…

[Hands On ML] 7. 集成学习和随机森林

文章目录1. 投票分类2. Bagging、Pasting3. Out of Bag 评价4. 随机贴片与随机子空间5. 随机森林6. 极端随机树 Extra-Trees7. 特征重要程度8. 提升方法8.1 AdaBoost8.2 梯度提升8.3 Stacking本文为《机器学习实战:基于Scikit-Learn和TensorFlow》的读书笔记。 中文…

LeetCode 635. 设计日志存储系统(map)

文章目录1. 题目2. 解题1. 题目 你将获得多条日志,每条日志都有唯一的 id 和 timestamp,timestamp 是形如 Year:Month:Day:Hour:Minute:Second 的字符串,例如 2017:01:01:23:59:59,所有值域都是零填充的十进制数。 设计一个日志…

ios 桥接文件找不到文件_电脑文件搜索神器,没有找不到的东西

随着工作或学习,使用电脑的时间增长,里面的文件也会越来越多。有时候想找某个文件,可能就突然忘了把它放在哪了。如果能想起文件名,那么还可以用电脑自带的搜索或者everything这类的软件进行搜索。但如果连文件名都忘了呢&#xf…

SQL行列问题

日常工作中,为了让数据的可读性更强,经常会对数据格式进行转化操作。总结一下日常工作中遇到的关于行列操作问题。 单行拆分成多行 --创建测试数据 CREATE TABLE fwj.customer ( id STRING, name STRING, mobiles STRING);INSERT INTO fwj.customer SEL…

LeetCode 296. 最佳的碰头地点(坐标独立+中位数的地方最近)

文章目录1. 题目2. 解题1. 题目 有一队人(两人或以上)想要在一个地方碰面,他们希望能够最小化他们的总行走距离。 给你一个 2D 网格,其中各个格子内的值要么是 0,要么是 1。 1 表示某个人的家所处的位置。这里&…

LeetCode 360. 有序转化数组(抛物线对称轴)

文章目录1. 题目2. 解题1. 题目 给你一个已经 排好序 的整数数组 nums 和整数 a、b、c。对于数组中的每一个数 x,计算函数值 f(x) ax^2 bx c,请将函数值产生的数组返回。 要注意,返回的这个数组必须按照 升序排列,并且我们所…

vue webpack打包入口文件是哪个_Vue 学习笔记(二十五):webpack 相关

Webpack 是什么Vue CLI Webpack 相关 Webpack更多参考官方文档Webpack 是一个前端资源加载/打包工具。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。 如图,Webpack 可以将多种静态资源 js、css、less 转换成一个…

美团差评数据分析,python代码实现

文章目录明确问题理解数据处理数据异常值处理标签处理新增计算列数据分析分析思路描述性分析探索性分析送达总时长时间过长,导致的差评骑手个人行为导致的差评商户行为导致的差评其他评价标签的白描建议明确问题 美团骑手出现差评的原因是什么?影响因素…

[原创]FineUI秘密花园(二十一) — 表格之动态创建列

有时我们需要根据数据来动态创建表格列&#xff0c;怎么来做到这一点呢&#xff1f;本章会详细讲解。 动态创建的列 还是通过一个示例来看下如何在FineUI中动态创建表格列&#xff0c;示例的界面截图&#xff1a; 先来看下ASPX的标签定义&#xff1a; 1: <ext:Grid ID"…