【机器学习】通俗的决策树算法讲解和应用

这把我C 2021-06-29 12:05:47 4409

【机器学习】通俗的决策树算法讲解和应用

在这里插入图片描述

文章目录
1 概述
2 决策树场景
3 决策树开发流程
4 决策树的实际运用
5 机器学习决策树算法解决图像识别-ENVI决策树分类
6 总结

1 概述

决策树(Decision Tree)算法是一种基本的分类与回归方法,是最经常使用的数据挖掘算法之一。我们这章节只讨论用于分类的决策树。

决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是 if-then 规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。

决策树学习通常包括 3 个步骤: 特征选择、决策树的生成和决策树的修剪。

2 决策树场景

一个叫做 "二十个问题" 的游戏,游戏的规则很简单: 参与游戏的一方在脑海中想某个事物,其他参与者向他提问,只允许提 20 个问题,问题的答案也只能用对或错回答。问问题的人通过推断分解,逐步缩小待猜测事物的范围,最后得到游戏的答案。

一个邮件分类系统,大致工作流程如下:
在这里插入图片描述
首先检测发送邮件域名地址。如果地址为 myEmployer.com, 则将其放在分类 "无聊时需要阅读的邮件"中。
如果邮件不是来自这个域名,则检测邮件内容里是否包含单词 "曲棍球" , 如果包含则将邮件归类到 "需要及时处理的朋友邮件",
如果不包含则将邮件归类到 "无需阅读的垃圾邮件" 。
决策树的定义:

分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型: 内部结点(internal node)和叶结点(leaf node)。内部结点表示一个特征或属性(features),叶结点表示一个类(labels)。

用决策树对需要测试的实例进行分类: 从根节点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子结点;这时,每一个子结点对应着该特征的一个取值。如此递归地对实例进行测试并分配,直至达到叶结点。最后将实例分配到叶结点的类中。

3 决策树开发流程

收集数据: 可以使用任何方法。
准备数据: 树构造算法 (这里使用的是ID3算法,只适用于标称型数据,这就是为什么数值型数据必须离散化。 还有其他的树构造算法,比如CART)
分析数据: 可以使用任何方法,构造树完成之后,我们应该检查图形是否符合预期。
训练算法: 构造树的数据结构。
测试算法: 使用训练好的树计算错误率。
使用算法: 此步骤可以适用于任何监督学习任务,而使用决策树可以更好地理解数据的内在含义。

优点: 计算复杂度不高,输出结果易于理解,数据有缺失也能跑,可以处理不相关特征。
缺点: 容易过拟合。
适用数据类型: 数值型和标称型。

4 决策树的实际运用

在这里插入图片描述
代码:

import pandas as pd
#数据处理
file="E:/text.csv"
data=pd.read_csv(file,encoding="gbk")
x=data.iloc[:,0:3].as_matrix()
y=data.iloc[:,3].as_matrix()
for i in range(len(x)):
    for j in range(len(x[0])):
        if x[i][j]=='是' or x[i][j]=='多':
            x[i][j]=1
        else:
            x[i][j]=0
for i in range(len(y)):
    if y[i]=='高':
        y[i]=1
    else:
        y[i]=0
#格式转换
xf=pd.DataFrame(x)#框架化
yf=pd.DataFrame(y)
x2=xf.as_matrix().astype(int)
y2=yf.as_matrix().astype(int)
#决策树
from sklearn.tree import DecisionTreeClassifier as DTC
dtc=DTC(criterion="entropy")
dtc.fit(x2,y2)
#可视化
from sklearn.tree import export_graphviz
from sklearn.externals.six import StringIO
with open("E:/dtc.dot",'w') as file:
    export_graphviz(dtc,feature_names=["shixi","time","chuxiao"],out_file=file)

运行结果:
在这里插入图片描述
结果中的value是最终结果的类别
entropy是权值
samples是其夫节点判断结果的样本数
每一个框的第一个值是我们对数据处理后的一个判断。(就像判断一个人的年龄<30,如果是就根据指示跳到下一层,依次类推)
逐层判断,最终得到预测值

5 机器学习决策树算法解决图像识别-ENVI决策树分类

初次做NDWI需要将一个波段上大于0的值显示成一种颜色进行影像分类,搜索了很久也没找到颜色显示的方法。最终在同门的帮助下终于学会了,秉着不让其他人再次受这样的磨难我将其步足先给大家。
1.在Toolbox栏索搜tree,选择New Decision Tree.如下图所示。
在这里插入图片描述

2.进入New Decision Tree,点击file新建New Tree
在这里插入图片描述

6 总结

决策树是一种自上而下,对样本数据进行树形分类的算法,既可以用于分类,又可以用于回归。决策树的构建过程也对应着对特征空间的划分:从根结点开始,计算该结点所有可能特征的信息增益(比)或基尼系数,选择信息增益(比)最大或基尼系数最小的特征作为结点的特征,由该特征的不同取值对训练数据进行分割,建立子结点;再对子结点递归地调用以上方法,构建决策树;直到所有特征的信息增益(比)很大或基尼系数很小或没有特征可以选择为止。最后每个子集都被分到叶结点上,即都有了明确的类,这就得到一个决策树。(每个内部结点表示一个特征,叶结点表示一个类。
决策树学习通常包括3个步骤:特征选择、决策树的生成和决策树的剪枝。决策树相当于用极大似然法进行概率模型的选择,其损失函数为正则化的极大似然函数 。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 93 5 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
这把我C
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区