文章目录

  • 一.前言
    • 1.1 本文原理
    • 1.2 本文目的
  • 二.实验过程
    • 2.1 使用scikit-learn机器学习包的决策树算法,使用4个特征对鸢尾花进行分类;
    • 2.2使用ID3算法对天气与踢球数据集进行手工计算,手写E(S, Temperature)、IG(S, Temperature) 、E(S, Humidity)、IG(S, Humidity)、E(S, Windy)、IG(S, Windy)的计算过程
    • 2.3 使用CART算法对天气与踢球数据集进行手工计算,手写Gini(S, Temperature)、Gini gain(S, Temperature) 、Gini(S, Humidity)、Gini gain(S, Humidity)、Gini(S, Windy)、Gini gain(S, Windy)的计算过程
    • 2.4 安装决策树可视化控件GraphViz和pydotplus包,对鸢尾花分类结果生成决策树可视化图片;
    • 2.5 决策树算法之鸢尾花特征分类可视化效果图
  • 三,收获

一.前言

1.1 本文原理

鸢尾花特征分类决策树算法可视化效果图如下:

决策树是一种常用的机器学习方法,它可以帮助我们解决分类和回归问题。该模型具有高度的可解释性。该模型符合人类的思维方式,是一种经典的树形结构。
熵:香农用“下降”一词来表示信息传输中不确定性的量化。降幅越大,不确定性越大,从这些信息中得出结论就越困难。

基尼系数比信息熵要简单很多,基尼系数的计算公式如下所示。

信息增益(ID3算法)以某特征划分数据集前后的熵的差值公式.


基尼指数的计算
在分类问题中,假设有k类,样本点属于k类的概率为PK,则概率分布的基尼指数定义为:

如果样本集D根据特征a分为D1和D2,则在特征a的条件下,集D的基尼指数定义为:

基尼指数基尼(D,a)表示不同特征a组中数据集D的不确定性。基尼指数越大,样本集的不确定性越大,这类似于熵的概念。

1.2 本文目的

  1. 使用scikit-learn机器学习包的决策树算法,使用4个特征对鸢尾花进行分类;
  2. 使用ID3算法对天气与踢球数据集进行手工计算,手写E(S, Temperature)、IG(S, Temperature) 、E(S, Humidity)、IG(S, Humidity)、E(S, Windy)、IG(S, Windy)的计算过程,拍照上传、粘贴图片到实验报告。(计算方法请参见附件PPT)
  3. 使用CART算法对天气与踢球数据集进行手工计算,手写Gini(S, Temperature)、Gini gain(S, Temperature) 、Gini(S, Humidity)、Gini gain(S, Humidity)、Gini(S, Windy)、Gini gain(S, Windy)的计算过程,拍照上传、粘贴图片到实验报告。(计算方法请参见附件PPT)
  4. (选做)安装决策树可视化控件GraphViz和pydotplus包,对鸢尾花分类结果生成决策树可视化图片;

二.实验过程

2.1 使用scikit-learn机器学习包的决策树算法,使用4个特征对鸢尾花进行分类;

老规矩,先引入load_iris模块,有150组鸢尾花特征数据,我们可以拿来进行学习特征分类。
如下代码:

from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target

引入决策树模块:

from sklearn import tree

根据特征分析,数据可分为根节点(初始节点)、中间节点和叶节点(无进一步可分离的节点)。

我们使用DecisionTreeClassifier创建一个决策树分类器,如下代码:

e = tree.DecisionTreeClassifier(criterion='entropy')

上文参数解释:

criterion : string,optional(default =“gini”)

特征选择标准,可选参数,默认是gini,可以设置为entropy。
基尼是基尼不纯,是将集合中的某个结果随机应用于某个数据项的预期错误率。这是一个统计概念。熵就是香农熵,一种基于信息论的思想。
选用全部特征值:

tree.fit(X,y)

输出训练得分和预测,如下代码:

print("决策树 training score: ",tree.score(X,y))
print("决策树 predict: ",tree.predict([[7,5,2,0.5],[7.5,4,7,2]]))

输出训练得分和预测运行截图如下:

2.2使用ID3算法对天气与踢球数据集进行手工计算,手写E(S, Temperature)、IG(S, Temperature) 、E(S, Humidity)、IG(S, Humidity)、E(S, Windy)、IG(S, Windy)的计算过程

手写图暂时不放了哈,字丑。(略)
记录一下PPT的样板计算过程如下:

E(S) = -[(9/14)log2(9/14) + (5/14)log2 (5/14)] = 0.94

本题目通过我的计算得如下结果:


E(S, Temperature)=0.911   IG(S, Temperature) =0.029
E(S, Humidity)=0.788    IG(S, Humidity)=0.152
E(S, Windy)=0.8932       IG(S, Windy)=0.048

最终,我们可以得到如下的决策树:

2.3 使用CART算法对天气与踢球数据集进行手工计算,手写Gini(S, Temperature)、Gini gain(S, Temperature) 、Gini(S, Humidity)、Gini gain(S, Humidity)、Gini(S, Windy)、Gini gain(S, Windy)的计算过程

手写图暂时不放了哈,字丑。(略)
记录一下PPT的样板计算过程如下:

Gini(S) = 1 - [(9/14)² + (5/14)²] = 0.4591


本题目通过我的计算得如下结果:

Gini(S, Temperature)=0.4405   Gini gain(S, Temperature)=0.0185
Gini(S, Humidity)=0.3674   Gini gain(S, Humidity)=0.0916
Gini(S, Windy)=0.4286    Gini gain(S, Windy)=0.0304

从结果来看,天气预报(outlook)的基尼
增益为0.117,是最高的,因此我们选择天
气预报(outlook)作为我们的根节点。

2.4 安装决策树可视化控件GraphViz和pydotplus包,对鸢尾花分类结果生成决策树可视化图片;

先安装可视化控件GraphViz:
去官网下载安装即可:
官网:

http://www.graphviz.org/


安装一下pydotplus模块。
安装一下os模块。
先使用os模块,指定一下路径等等信息。

import os
os.environ["PATH"] += os.pathsep + 'C:/Program Files/Graphviz/bin/'
from six import StringIO
dot_data=StringIO()

使用tree.export_graphviz,可视化决策树,如下代码:

tree.export_graphviz(clf, out_file=dot_data, feature_names=iris.feature_names,class_names=iris.target_names,filled=True,rounded=True,special_characters=True)
使用pydotplus模块设置图案格式等等信息,如下代码:
import pydotplus
graph =pydotplus.graph_from_dot_data(dot_data.getvalue())
from IPython.display import display,Image
display(Image(graph.create_png()))

指定输出格式,输出为pdf和png俩个

graph.write_png("tree_iris.png")
graph.write_pdf("tree_iris.pdf")

我们看一下效果图:

2.5 决策树算法之鸢尾花特征分类可视化效果图


三,收获

本次实验收获很大,学会了使用决策树算法4个特征对鸢尾花进行分类,使用ID3算法和CART算法对天气与踢球数据集进行手工计算,还学会了安装决策树可视化控件GraphViz和pydotplus包,对鸢尾花分类结果生成决策树可视化图片,本次实验让我对机器学习有了更加扎实的基础和理解。

决策树算法之鸢尾花特征分类可视化详解【机器学习】相关推荐

  1. 独家总结 | 决策树算法Python实现(附代码详解及注释)

    ↑ 点击上方[计算机视觉联盟]关注我们 上一篇已经介绍过决策树基本原理机器学习经典算法决策树原理详解(简单易懂) 纸上得来终觉浅,仅仅懂了原理还不够,要用代码实践才是王道,今天小编就附上小编自己在学习 ...

  2. 数学建模_随机森林分类模型详解Python代码

    数学建模_随机森林分类模型详解Python代码 随机森林需要调整的参数有: (1) 决策树的个数 (2) 特征属性的个数 (3) 递归次数(即决策树的深度)''' from numpy import ...

  3. 尺度不变特征变换匹配算法详解

    尺度不变特征变换匹配算法详解 Scale Invariant Feature Transform(SIFT) Just For Fun 对于初学者,从David G.Lowe的论文到实现,有许多鸿沟, ...

  4. python机械臂仿真_VTK与Python实现机械臂三维模型可视化详解

    三维可视化系统的建立依赖于三维图形平台, 如 OpenGL.VTK.OGRE.OSG等, 传统的方法多采用OpenGL进行底层编程,即对其特有的函数进行定量操作, 需要开发人员熟悉相关函数, 从而造成 ...

  5. php mysql无限_php+mysql实现无限分类实例详解

    php+mysql实现无限分类实例详解 fenlei($arr[$i][0]);   //$arr[$i][1]表示第$i+1个分类的id的值.进行递归,也就是把自己的id作为f_id参数把自己的子类 ...

  6. VTK与Python实现机械臂三维模型可视化详解

    三维可视化系统的建立依赖于三维图形平台, 如 OpenGL.VTK.OGRE.OSG等, 传统的方法多采用OpenGL进行底层编程,即对其特有的函数进行定量操作, 需要开发人员熟悉相关函数, 从而造成 ...

  7. Java引用类型分类以及详解

    Java引用类型分类以及详解 - Java引用类型概述 在JVM之中再好的算法,也敌不过一个好烂的程序员.一个程序要想写好有两点:按照开发标准进行.请写有用代码. 而对于垃圾的产生与回收的处理之中,要 ...

  8. 三、教你搞懂渐变堆叠面积图《手把手教你 ECharts 数据可视化详解》

    注:本系列教程需要对应 JavaScript .html.css 基础,否则将会导致阅读时困难,本教程将会从 ECharts 的官方示例出发,详解每一个示例实现,从中学习 ECharts . ECha ...

  9. 美团技术团队:实例详解机器学习如何解决问题

    参考文献: 1. 美团技术团队:实例详解机器学习如何解决问题 2. 美团团队技术博客

最新文章

  1. java opengl es_Java-Android-使用openGL ES绘制3D然后绘制2D
  2. 来自22岁的大学生的体检报告:x光显示双肺纹理增多
  3. OpenCASCADE绘制测试线束:图形命令之AIS 查看器——显示命令
  4. Redis源码编译安装
  5. 40张图全面解析TCP 三次握手和四次挥手
  6. Android恶意代码分析流程,[原创]恶意代码plankton分析记录(1)
  7. 在mac上安装cgal4.11时,QT5 和qglviewer的设置
  8. ubuntu 12.04安装vncserver
  9. 腾讯等技术大佬分享的高可用架构干货,全在这里了
  10. web@css盒模型详解
  11. 电气原理图制图相关GB标准
  12. 光电耦合器简单介绍以及作用
  13. 医院网络广告的结算形式-医院网络营销站外合作篇
  14. 你需要明白的索引和约束的前缀(AK,PK,IX,CK,FK,DF,UQ)
  15. Python之ARP协议探测MAC地址
  16. MongoDB误操作恢复测试
  17. [OHIF-Viewers]医疗数字阅片-医学影像-Module: Panel-自定义面板-中-es6-Object.defineProperty()定义属性...
  18. 设计模式之 State(状态模式)通俗理解
  19. python如何提取数据中的年月_Python数据处理笔记——Pandas时间数据提取处理
  20. Shell 快捷键助你一臂之力

热门文章

  1. Anders Hejlsberg访谈:Checked Exceptions的问题
  2. mysql8设置用户权限报错You have an error in your SQL syntax;right syntax to use near ‘IDENTIFIED BY
  3. 企业MES实施与供应链追溯
  4. android:layout_marginRight不起作用
  5. ceb 抽取 linux 工具,Linux系统常用监控工具
  6. 智能优化算法之蚁群算法
  7. 我听这种音乐的时候最爱你--龙宽九段
  8. 2022-2028年中国健身休闲产业深度调研及投资前景预测报告
  9. 【自然语言处理】【Prompt】P-tuning
  10. 使用 OpenLaszlo 创建 Web 富客户端