目录索引

  • 目录索引
  • 写在前面的话
  • 决策树构建的一般流程
  • 数据的构建
  • 参考链接
  • 写在后面的话

写在前面的话

如果您有任何地方看不懂的,那一定是我写的不好,请您告诉我,我会争取写的更加简单易懂!

如果您有任何地方看着不爽,请您尽情的喷,使劲的喷,不要命的喷,您的槽点就是帮助我要进步的地方!


1.决策树构建的一般流程

  • 收集数据:任何你能收集数据的方法
  • 准备数据: 决策树的算法只适用于标称型数据(可理解为离散型的,不连续的),因此数值型的数据(连续的数据)必须离散化。
  • 分析数据: 可以使用任何方法,构造树完成之后,我们要检查图形是否符合预期。
  • 训练算法:构造决策树的数据结构。
  • 测试算法: 使用经验树计算错误率。
  • 使用算法: 此步骤可以适用于任何监督学习算法,而使用决策数可以更好的理解数据的内在含义 (why? 对比于其他算法,比如说k均值算法,就是把给定的数据按照相似度分为一类,每一类表示什么你可能就不知道了。就像我们上一章讲的那个例子,可以用决策树做邮件的分类系统,我们可以根据分类标签知道这个邮件是垃圾邮件还是需要立刻处理的邮件)

2. 数据的构建

我们使用的例子还是《机器学习与实战》那本书上的例子。我把写作的思路和流程改了一下,还有这本书里好多错误,我好想帮作者重写这本书,或许不是作者的错误,是翻译和排版的错误。

首先我们第一步还是收集数据:

在这张表中我们可以发现这里有5个数据,这里有两个特征(要不要浮出水面生存,和是否有脚蹼)来划分这5个生物是鱼类还是非鱼类。
现在我们要做的就是是要根据第一个特征还是第二个特征来划分数据,进行分类。

我们使用python来构建我们的代码。


我们创建一个名为trees.py的python文件,然后在下面输入以下的代码

#!/usr/bin/env python
# coding=utf-8
# author: chicho
# running: python trees.py
# filename : trees.pydef createDataSet():dataSet = [[1,1,'yes'],[1,1,'yes'],[1,0,'no'],[0,1,'no'],[0,1,'no']] # 我们定义了一个list来表示我们的数据集,这里的数据对应的是上表中的数据labels = ['no surfacing','flippers']return dataSet, labels

其中第一列的1表示的是不需要浮出水面就可以生存的,0则表示相反。 第二列同样是1表示有脚蹼,0表示的是没有。

这个时候我们来测试以下我们的数据集。
我用的是linux系统,我们打开一个终端来测试以下我们的数据。
我们创建完这个文件之后,进入到这个文件的目录下。我把这个文件保存在~/code 这个路径下。

我们输入python,进入shell命令,如下图所示

代码如下:

>>> import trees
>>> reload(trees)
<module 'trees' from 'trees.pyc'>
>>> myDat,labels=trees.createDataSet()
>>> myDat
[[1, 1, 'yes'], [1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0, 1, 'no']]
>>> labels
['no surfacing', 'flippers']
>>>

我们来说说这段代码:
import的作用:
导入/引入一个python标准模块,其中包括.py文件、带有init.py文件的目录。

例如:


import module_name[,module1,...]
from module_name import *|child[,child1,...]  

注意:
多次重复使用import语句时,不会重新加载被指定的模块,只是把对该模块的内存地址给引用到本地变量环境。
也就是说使用import的时候引用的module只会被加载一次,只会被加载一次,系统会把这个模块的地址给引用它的代码或者是这个python文件。

我们来测试以下

构建两个文件 a.py 和 b.py
其中a.py的代码如下:

#!/usr/bin/env python
# coding=utf-8
import osprint 'in a.py file'
print 'The address of os is:', id(os)print '***end***'

我们在b.py中写如下代码:

#!/usr/bin/env python
# coding=utf-8
#filename: b.pyimport a
import osprint "*****************"
print 'in b file'
print 'The adress of b file is:',id(os)import a
print 'The adress of a module is:',id(a)

这个时候,我们来测试以下结果:

我们在a,b两个文件中都引入了os 模块但是我们发现它的地址都没有改变。

reload

reload 的目的是为了开发期的 “edit and debug”/即编即调

reload 的作用:
对已经加载的模块进行重新加载,一般用于原模块有变化等特殊情况,reload前该模块必须已经import过。
e.g:

import os
reload(os)

说明:
reload会重新加载已加载的模块,但原来已经使用的实例还是会使用旧的模块,而新生产的实例会使用新的模块;reload后还是用原来的内存地址;不能支持from。。import。。格式的模块进行重新加载。

我们在举一个例子:

创建两个文件c.py, 以及文件 d.py

#!/usr/bin/env python
# coding=utf-8
# filename : c.py
import osprint 'in c.py file'
print 'The address of os is:', id(os)print '***end***'

这个时候我们用d.py这个文件去引用c这个模块


#!/usr/bin/env python
# coding=utf-8
#filename: d.pyimport c
import osprint "*****************"
print 'in d file'
print 'The adress of os is:',id(os)print 'The address of c file is:',id(c)print '*****reload******'
reload(c) print '****reload*****'print 'The adress of c module is:',id(c)

接下来我们来测试一下结果:

可以发现reload和import的区别就是一个只能加载模块多次,一个可以加载一次

总之,我们的数据集就这么愉快的创建好了。





3.参考链接

http://blog.csdn.net/turkeyzhou/article/details/8846527


写在后面的话

我又打不动字了,本来还想写的更好一些,有时间再来补得更好一点吧。

要么就不做,要做就做最好,这是我的忍道!

所以这篇blog也是我好好写的,有啥需要改进的请您及时告诉我。^^



决策树算法(二)——构建数据集相关推荐

  1. 机器学习实验:使用sklearn的决策树算法对葡萄酒数据集进行分类

    机器学习实验:使用sklearn的决策树算法对葡萄酒数据集进行分类 问题如下: 使用sklearn的决策树算法对葡萄酒数据集进行分类,要求: ①划分训练集和测试集(测试集占20%) ②对测试集的预测类 ...

  2. 利用决策树算法在鲍鱼数据集上对年龄进行预测

    在上一篇文章中,通过调取sklearn库中的tree模块来构建在鲍鱼数据集上的决策树,并对测试集鲍鱼的年龄进行预测,但是,通过调库的方式只能处理数值型的属性,若数据集中既包含连续型属性和离散型属性,则 ...

  3. scikit-learn决策树算法(鸢尾花数据集、餐饮饭店销量)

    文章目录 实验三.scikit-learn决策树算法 一.实验目的 1. 熟悉掌握决策树的原理 2. 使用scikit-learn库中的对应函数实现决策树分类. 二.能力图谱 三.实验工具 1. An ...

  4. 【机器学习】Java 代码实现 CART 决策树算法

    文章目录 一.决策树算法 二.CART 决策树 三.Java 代码实现 3.1 TrainDataSet 3.2 DataType 3.3 PredictResult 3.4 CartDecision ...

  5. 决策树算法和CART决策树算法详细介绍及其原理详解

    相关文章 K近邻算法和KD树详细介绍及其原理详解 朴素贝叶斯算法和拉普拉斯平滑详细介绍及其原理详解 决策树算法和CART决策树算法详细介绍及其原理详解 线性回归算法和逻辑斯谛回归算法详细介绍及其原理详 ...

  6. 决策树算法——拟合优化

    一.决策树算法原理 上一篇文章简单.直接.粗暴的使用了决策树算法对鸢尾花数据集进行分类,关于决策树算法的原理,以我的理解:就是用能最大概率的区分不同类别标签的特征值作为分裂节点. 常用的算法是:CAR ...

  7. 机器学习强基计划2-2:一文详解ID3、C4.5、CART决策树算法+ Python实现

    目录 0 写在前面 1 什么是决策树? 2 决策树算法框架 3 常见决策树算法 3.1 ID3算法 3.2 C4.5算法 3.3 CART算法 4 Python实现三种决策树算法 4.1 数据集 4. ...

  8. ML之DT:基于DT决策树算法(交叉验证FS+for遍历最佳FS)对Titanic(泰坦尼克号)数据集进行二分类预测

    ML之DT:基于DT决策树算法(交叉验证FS+for遍历最佳FS)对Titanic(泰坦尼克号)数据集进行二分类预测 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 fs = fea ...

  9. ML之DT:基于DT决策树算法(对比是否经特征筛选FS处理)对Titanic(泰坦尼克号)数据集进行二分类预测

    ML之DT:基于DT决策树算法(对比是否经特征筛选FS处理)对Titanic(泰坦尼克号)数据集进行二分类预测 目录 输出结果 设计思路 核心代码 输出结果 初步处理后的 X_train: (984, ...

  10. 在西瓜数据集上用Python实现ID3决策树算法完整代码

    在西瓜数据集上用Python实现ID3决策树算法完整代码 文章目录 1.决策树算法代码ID3.py 2.可视化决策树代码visual_decision_tree.py 3.贴几张运行结果图 1.生成的 ...

最新文章

  1. python掌握程度怎么判断-Python学到什么程度可以面试工作?
  2. Vue前后台数据交互实例演示,使用axios传递json字符串、数组
  3. hdu1528 Card Game Cheater
  4. oracle删除分区空间,Oracle 11g维护分区(三)——Dropping Partitions
  5. 《人月神话》阅读笔记--02
  6. MFC获得当前应用程序目录的GetCurrentDirectory()和GetModuleFileName()函数
  7. 大数据 notebook_Dockerless Notebook:数据科学期待已久的未来
  8. 程序员:请不要对我的代码指手画脚!
  9. paip.提升用户体验---提取FLASH中图片
  10. centos查询 硬盘序列号查询_linux centos7非常有用的硬件信息查询命令
  11. 冯诺依曼体系结构示意图
  12. internet时间同步服务器地址(中国国家授时中心)
  13. 遗传图谱基础原理培训资料
  14. JavaScript 数据类型和类型转换
  15. ios html5 audio mp3,H5 audio 微信端 在IOS上不能播放音乐
  16. Global Illumination_Spherical Harmonic Lighting(球谐光照)
  17. Java项目:springboot客户关系管理系统
  18. qpython爬虫_python爬虫教程:批量抓取 QQ 群信息
  19. Amazon Aurora Serverless v2 正式发布:瞬时扩展应对高要求的工作负载
  20. Traefik-ingress和Nginx-ingress对比

热门文章

  1. 微服务等于Spring Cloud?了解微服务架构和框架
  2. 全民K歌内容挖掘与召回
  3. 大神级教程!300分钟撸一个基于Redis 6.0 版本的高并发架构
  4. 高性能 Java 应用层网关设计实践
  5. 网易分布式数据库多活架构的演进与实践
  6. 这些Java8官方挖的坑,你踩过几个?
  7. 闲着无聊去体验远程面试,最后竟然被录取了...
  8. 物竞天择,适者生存,架构进化之路
  9. 自动化 专业 与行业
  10. ubuntu g++编译32位应用