文章目录

  • 决策树算法浅析
    • 决策树的介绍
    • 决策树最佳划分的度量问题
    • 决策树python案例

决策树算法浅析

决策树的介绍

决策树的定义: 决策树是一种逼近离散值目标函数的方法,学习到的函数使用树结构进行表示,完成决策任务。这里决策树可以是分类树,也可以是回归树。

树结构的使用: 一个决策树一般由根节点、若干内部节点、若干叶子节点构成。叶子节点就是决策结果;每个内部节点对应一个属性测试,每个内部节点包含的样本集合,根据属性测试结构进一步划分,进入该内部节点的子节点;根节点包含全部的训练样本,从根节点到每个叶子节点,对应了一条决策规则。

决策过程的理解:
先以一个简单的动物分类任务为例,如何区分鸡和鸭两类动物。我们决策过程应该是思考,鸡和鸭两种动物较为明显的区分特征。例如,嘴部结构特征,根据该特征(属性)制定决策过程,如果尖嘴就是鸡,如果是扁形嘴就是鸭。

再拓展到复杂的动物分类任务,从多个动物样本数据中,区分哺乳动物和非哺乳动物。观察表格样本数据,明显发现仅使用一个特征无法正确完成分类任务。此时,我们可以同时考虑其他特征,增加决策规则。

另一个角度去理解,决策树构建的过程,类似与使用python语言编写了若干if-else分支去解决问题。

动物 饮食习性 胎生动物 水生动物 会飞 哺乳动物
人类 杂食动物
野猪 杂食动物
狮子 肉食动物
苍鹰 肉食动物
鳄鱼 肉食动物
巨蜥 肉食动物
蝙蝠 杂食动物
野牛 草食动物
麻雀 杂食动物
鲨鱼 肉食动物
海豚 肉食动物
鸭嘴兽 肉食动物
袋鼠 草食动物
蟒蛇 肉食动物

不断寻找特征,增加规则的过程,实际上就是构建决策树的过程,我们总能得到一个决策树可以较好的完成分类任务。
这里我们需要思考以下内容:

  • 1.数据方面,使用的是离散化数据特征,连续数值类型需要进行离散化。
  • 2.过拟合问题,可能存在数据样本需要复杂的属性测试,制定很多规则才能完成分类,导致过拟合的产生。
  • 3.建模方面,尽可能构建简单的决策树,少进行属性测试。这也是决策树算法的关键问题。

决策树最佳划分的度量问题

我们总想先找到关键特征,根据关键特征进行属性测试,将无序数据变得更加有序,或者说将划分后的数据样本的“不纯度”不断降低。

如何对节点进行不纯度的度量?可以使用以下方式度量:

  • 熵:无序化程度的度量,熵越大则表示越混乱。
  • 误分类率:错误分类概率
  • 基尼指数:表示在样本集合中一个随机选中的样本被分错的概率。

有了度量标准后,我们就可以寻找,从父节点到子节点属性测试时,熵减最大、误分类率降低最大或基尼指数减最大的特征,循环该过程使得决策树不断生长。

大家可以尝试根据上述表格中的数据进行度量计算。

决策树python案例

wine葡萄酒数据集

  • 数据记录178条
  • 数据特征13个’酒精’,‘苹果酸’,‘灰’,‘灰的碱性’,‘镁’,‘总酚’,‘类黄酮’,‘非黄烷类酚类’,‘花青素’,‘颜色强度’,‘色调’,‘od280/od315稀释葡萄酒’,‘脯氨酸’
  • 目标类别3类:‘琴酒’,‘雪莉’,‘贝尔摩德’

决策树结构可视化
特征贡献的排序可视化

# 导入所需要的模块
import matplotlib.pyplot as plt
import pandas as pd           #读取数据
from sklearn import tree #树的模块
from sklearn.datasets import load_wine #导入红酒数据集
from sklearn.model_selection import train_test_split # 划分数据集的模块
plt.rcParams['font.sans-serif']=['SimHei']# 探索数据
wine = load_wine()
# 数据有178个样本,13个特征pd.concat([pd.DataFrame(wine.data),pd.DataFrame(wine.target)],axis=1)# 划分数据为训练集和测试集,test_size标示测试集数据占的百分比
Xtrain, Xtest, Ytrain, Ytest = train_test_split(wine.data,wine.target,test_size=0.3)# 建立模型
clf = tree.DecisionTreeClassifier(criterion="entropy")# 实例化模型,添加criterion参数
clf = clf.fit(Xtrain, Ytrain)# 使用实例化好的模型进行拟合操作
score = clf.score(Xtest, Ytest) #返回预测的准确度#对数结构进行可视化
tree.plot_tree(clf)# 对特征重要度数据进行可视化
importances = list(clf.feature_importances_)      #辛烷值RON影响因素的重要性
feature_importances = [(feature, round(importance, 2)) for feature, importance in zip(feature_name,importances)]     #将相关变量名称与重要性对应
feature_importances = sorted(feature_importances, key = lambda x: x[1], reverse = True)                #排序
print(*feature_importances)
feature_importances_df =pd.DataFrame(feature_importances)
print(df)
[print('Variable: {:12} Importance: {}'.format(*pair)) for pair in feature_importances]            #输出特征影响程度详细数据#绘图
f,ax = plt.subplots(figsize = (13,8))    #设置图片大小
x_values = list(range(len(importances)))
plt.bar(x_values,feature_importances_df[1], orientation = 'vertical', color = 'r',edgecolor = 'k',linewidth =0.2)    #绘制柱形图
# Tick labels for x axis
plt.xticks(x_values, feature_importances_df[0], rotation='vertical',fontsize=8)
# Axis labels and title
plt.ylabel('Importance'); plt.xlabel('Variable'); plt.title('Variable Importances');#特征重要性
print(clf.feature_importances_)# 查看每一个特征对分类的贡献率
print([*zip(feature_name,clf.feature_importances_)])tree.DecisionTreeClassifier(criterion="entropy",random_state=30)
clf = clf.fit(Xtrain, Ytrain)
score = clf.score(Xtest, Ytest) #返回预测的准确度
print(score)

决策树算法:原理与python实现案例相关推荐

  1. 决策树算法原理(python)

    实验环境 python 3.6.5 jupyter 决策树是什么 决策论中,决策树(Decision tree)由一个决策图和可能的结果(包括资源成本和风险)组成, 用来创建到达目标的规划.决策树建立 ...

  2. 决策树算法原理以及决策树规则生成方法

    决策树算法原理以及决策树规则生成方法 决策树是一种可解释性较强的策略分析工具.creditmodel提供了分类回归树和条件推断树两种决策树生成和提取规则的方法. 每一个风险管理人员都应该掌握使用决策树 ...

  3. 决策树算法原理及实现

    决策树算法原理及实现 转载自:https://www.cnblogs.com/sxron/p/5471078.html (一)认识决策树 1.决策树分类原理 决策树是通过一系列规则对数据进行分类的过程 ...

  4. 决策树算法原理(ID3,C4.5)

    决策树算法原理(CART分类树) CART回归树 决策树的剪枝 决策树可以作为分类算法,也可以作为回归算法,同时特别适合集成学习比如随机森林. 1. 决策树ID3算法的信息论基础   1970年昆兰找 ...

  5. 决策树算法原理(下)

    在决策树算法原理(上)这篇里,我们讲到了决策树里ID3算法,和ID3算法的改进版C4.5算法.对于C4.5算法,我们也提到了它的不足,比如模型是用较为复杂的熵来度量,使用了相对较为复杂的多叉树,只能处 ...

  6. 决策树算法原理(上)

    决策树算法在机器学习中算是很经典的一个算法系列了.它既可以作为分类算法,也可以作为回归算法,同时也特别适合集成学习比如随机森林.本文就对决策树算法原理做一个总结,上篇对ID3, C4.5的算法思想做了 ...

  7. FlyAI小课堂:python机器学习笔记:深入学习决策树算法原理

    分类技术(或分类法)是一种根据输入数据建立分类模型的系统方法,分类法的例子包括决策分类法,基于规则的分类法,神经网络,支持向量机和朴素贝叶斯分类法.这些技术都使用一种学习算法(learning alg ...

  8. 机器学习——决策树算法原理及案例

    机器学习在各个领域都有广泛的应用,特别在数据分析领域有着深远的影响.决策树是机器学习中最基础且应用最广泛的算法模型.本文介绍了机器学习的相关概念.常见的算法分类和决策树模型及应用.通过一个决策树案例, ...

  9. 决策树算法原理及案例

    机器学习在各个领域都有广泛的应用,特别在数据分析领域有着深远的影响.决策树是机器学习中最基础且应用最广泛的算法模型.本文介绍了机器学习的相关概念.常见的算法分类和决策树模型及应用.通过一个决策树案例, ...

最新文章

  1. linux7设置时间,CentOS 7 设置日期和时间
  2. LBP(局部二值模式)特征提取原理
  3. 基于知识图谱的问答系统(以医疗行业为例)
  4. deferred对象和promise对象(二)---deferred对象
  5. oracle 建表时间戳类型,Oracle插入timestamp类型数据详解
  6. POJ2019(二维RMQ问题 ST)
  7. MongoDB 复制集和分片的理解
  8. 【Spark】SparkStreaming之windows操作
  9. Linux下后台任务管理screen的常见用法(命令)
  10. SQL Server MYSQL 对外键建立索引的必要性
  11. 【工赋开发者社区】产业互联网和工业互联网的区别
  12. HTML怎么插入一段代码
  13. 中文版Cooledit2.1安装程序+插件
  14. 猪圈密码 摩斯密码 QWE加密 栅栏加密 当铺密码
  15. 青青子美人之QQ美女找茬辅助工具c#源码
  16. 路由实验7777777
  17. 计算机中英字幕精品教程合集
  18. 加装固态硬盘后计算机不显示,安装固态硬盘后无法读取,如何解决?
  19. 如何使用Flashfxp上传下载文件
  20. 机器人搭建记录 yobot(LinuxWindows手动搭建)

热门文章

  1. JDK8新的时间类LocalDateTime,LocalTime,LocalDate使用笔记
  2. 内蒙古8项制度保障农牧民工工资支付
  3. OneNote 开发与使用
  4. 基于单片机智能手环心率老人防跌倒心率体温 步数里程
  5. 计蒜客2018蓝桥杯省赛B组模拟赛(一)题目及解析(未完待续)
  6. window host配置域名
  7. sci论文中的数据与表格形式
  8. 再读 ucosII源码(邵贝贝):任务管理
  9. MySQL 之全文索引(fulltext)
  10. node js 排序问题