机器学习训练营——机器学习爱好者的自由交流空间(入群联系qq:2279055353)

决策树(Decision Trees, DTs)是一种非参数的有监督学习方法,广泛使用于分类和回归中。它的目标是,通过数据特征学习简单的决策规则,产生一个决策模型预测一个目标变量的值。例如下面的例子,决策树从数据学习一个if-then-else规则集,近似一条正弦曲线。树越深,决策规则和拟合的模型就越复杂。

决策树具有以下优势:

  • 树能可视化,容易理解和解释。

  • 对数据准备要求低。其它的技术经常要求数据归一化、变量虚拟化、删除空白值。然而也要注意,决策树不支持缺失值。

  • 使用树的代价,与训练树的数据点的数量是对数关系。

  • 能够处理数值和类别数据。

  • 能够处理多输出问题。

  • 可以使用统计检验评价模型。

  • 即使数据的真实模型与假设有点不一致,决策树的表现也很出色。

决策树的劣势包括:

  • 决策树能产生过度复杂的树,不能很好地概括数据,这被称为过度拟合(overfitting).

  • 决策树可能是不稳定的,数据的小的变异都可能导致生成完全不同的树。这个问题可以使用决策树集成方法解决。

  • 学习一棵最优决策树是NP-complete的。因此,实际的决策树学习算法大多基于启发式学习,例如greedy算法。这些启发式算法并不能保证得到全局最优的决策树,可以通过在一个集成学习里训练多棵树的办法解决这个问题。

  • 如果一些类占优势的话,决策树学习可能产生有偏的树。因此,建议在拟合决策树之前先平衡数据集。

分类

DecisionTreeClassifier是一个能够做多类别分类的scikit-learn类。同其它分类器一样,DecisionTreeClassifier取两个输入数组:装载训练样本的[n_samples, n_features]数组X, 大小为[n_samples]的整数数组Y, 装载训练样本的类标签。

from sklearn import tree
X = [[0, 0], [1, 1]]
Y = [0, 1]
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X, Y)

拟合后,模型可以使用预测样本所属的类。

clf.predict([[2., 2.]])

也可以预测每个类的概率,即,在叶子里相同类的训练样本的比例。

clf.predict_proba([[2., 2.]])

DecisionTreeClassifier既可以作二值分类(类标签-1, 1),也可以作多类别分类(类标签0, 1, …, k-1).

使用Iris数据集构建一棵树。

from sklearn.datasets import load_iris
from sklearn import tree
iris = load_iris()
clf = tree.DecisionTreeClassifier()
clf = clf.fit(iris.data, iris.target)

训练一棵树后,我们能够使用export_graphviz输出器,以Graphviz的格式输出树。如果你使用conda包管理器,图形的二进制文件和python包能以下面的形式安装:

conda install python-graphviz

图形的二进制文件也可以从graphviz项目主页下载(https://pypi.org/project/graphviz/),使用pip包管理工具安装。

然后,为了能够可视化产生的DOT源代码,还需要安装Graphviz. 在graphviz项目主页,点击download page, 进入下载页面。

对于Windows用户,建议下载稳定版本的安装包。

最后,还要将包括dot可执行程序的Graphviz文件夹添加到Windows环境变量里,这样,需要执行dot时,Windows自动在环境变量里搜索执行。

使用cmd命令打开命令提示符,输入dot -version, 如果安装成功,应该显示如下:

继续在iris数据集建决策树的例子,将整个iris数据集上建的树以graphviz输出,可视化结果保存在用户指定的路径里的iris.pdf文件里。

export_graphviz输出器也支持很多图形美化选项,包括根据节点的类或回归值着不同的颜色,使用明确的变量或类名字。Jupyter notebooks支持自动输出美工后的图型。

拟合后的决策树可以预测样本所属类别。

clf.predict(iris.data[:1, :])

也可以预测样本属于每个类的概率。

clf.predict_proba(iris.data[:1, :])

精彩内容,请关注微信公众号:统计学习与大数据

【sklearn第十四讲】决策树之分类篇相关推荐

  1. 【SLAM十四讲】ch11 回环检测 词袋法实验 得出相似分数后计算PR曲线 VPR实验 编辑中

    [SLAM十四讲]ch11 回环检测 词袋法实验 得出相似分数后计算PR曲线 [SLAM十四讲]ch11 回环检测 词袋法实验 得出相似分数后计算PR曲线 DBow3库安装 ch11编译 ch11 词 ...

  2. 视觉SLAM十四讲学习笔记---前三讲学习笔记总结之SLAM的作用、变换和位姿表示

    经过半年学习SLAM相关知识,对SLAM系统有了一些新的认识,故回看以前的学习记录,做总结和校正. 前三讲学习笔记如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉S ...

  3. 视觉SLAM十四讲学习笔记-第二讲-初识SLAM

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 "定位"和"建图",可以看成感知的"内外之分". ...

  4. 大白话5分钟带你走进人工智能-第二十四节决策树系列之分裂流程和Gini系数评估(3)...

     第二十四节决策树系列之分裂流程和Gini系数评估(3) 上一节中我们讲解了决策树的数学表达形式,本节的话我们讲解决策树的分裂流程以及分裂条件的评估.我们基于决策树的递归表达式上:           ...

  5. tensorflow 语义slam_研究《视觉SLAM十四讲从理论到实践第2版》PDF代码+《OpenCV+TensorFlow深度学习与计算机视觉实战》PDF代码笔记...

    我们知道随着人工神经网络和深度学习的发展,通过模拟视觉所构建的卷积神经网络模型在图像识别和分类上取得了非常好的效果,借助于深度学习技术的发展,使用人工智能去处理常规劳动,理解语音语义,帮助医学诊断和支 ...

  6. 视觉SLAM十四讲 第1-2讲 初识SLAM

    视觉SLAM十四讲 第1-2讲 初识SLAM 1. slam 是什么 2. SLAM基本模块 3. 相机的种类 4. 视觉slam基本流程 5. 非/线性系统.非/高斯系统 6. CMake 1. s ...

  7. 【视觉SLAM入门】一些关于视觉SLAM十四讲的重要基础概念

    文章目录 高翔. *视觉SLAM十四讲 从理论到实践*. 电子工业出版社, 2017. Print. 第二章:初识SLAM 第三章:三维空间刚体运动 第四章:李群与李代数 第五章:相机与图像 第六章: ...

  8. 学习记录-视觉SLAM十四讲第2版(二)

    文章目录 前言 一.问题是什么? 二.工具是什么? 1.分类 2.三种相机 (1)单目相机 (2)双目相机 (3)深度相机 三.流程是什么? 1.总的流程框架 2.每个步骤说明 3.补充 四.尺度不确 ...

  9. 视觉SLAM十四讲--第13讲 实践:设计SLAM系统(最详细的代码调试运行步骤)

    文章目录 一. 代码目录介绍及运行步骤 代码目录: 如何运行 二. 代码调试问题 1. 准备工作 2. 遇到的问题及解决办法 3. 成功运行 三. 代码理解 核心算法结构 数据结构: 算法 代码理解及 ...

  10. SLAM面试笔记(1) -《视觉SLAM十四讲》

    目录 第2讲:初识SLAM 问题1: 简述经典的SLAM框架 问题2: 视觉里程计的作用和存在的问题 问题3: 后端优化的作用 问题4: 回环检测的作用 第3讲:三维空间刚体运动 问题5:描述四元数的 ...

最新文章

  1. 美国12大科技公司如何参与自动驾驶?
  2. 线程同步锁 java_java多线程同步之重入锁,详细解析
  3. linux安装python库报错pywin32_完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误...
  4. 【Android开发】用户界面设计-开发自定义的View
  5. Auto-Keras与AutoML:入门指南
  6. 两个月新手的几点 storyboard 心得
  7. JavaScript canvas实现俄罗斯方块
  8. vba两个集合的差集_Python中的集合是如何使用的?
  9. Spring Boot(十八):使用Spring Boot集成FastDFS
  10. task 13-change the lcd to 32bpp form 16bpp.
  11. JAVA学习(三)----常量和数据类型
  12. 谷歌浏览器 performance 详解
  13. 开源天气时钟项目删减和更新
  14. C# 对Excel表格中的数据进行排序
  15. lterator遍历
  16. 数论出题组比赛用题:签到题(待完善)
  17. 2018 android最新版本,2008年至2018年,Android系统10年进化史
  18. 核查清单-小程序分享功能
  19. mmrotate学习记录
  20. egret 实现图片一次闪光效果

热门文章

  1. 思科路由器RIP路由汇总
  2. HCIE-Security Day1:防火墙概述、实验环境搭建、三种方式管理防火墙
  3. mysql like BR%._MySQL Like子句
  4. 游戏开发之C++类和对象相关概念实例(C++)
  5. Kubernetes详解(十四)——Pod对象生命周期
  6. C++ 链表入门习题
  7. 文件比较与同步工具——FreeFileSync
  8. 家庭记事本开发进度6
  9. PowerDesigner之PDM(物理概念模型)
  10. Perl面向对象编程