决策树

expedition expedition     2022-12-01     612

关键词:

决策树原理

对一系列问题进行if/else推导,最终实现决策

技术图片

决策树构建

#导入numpy
import numpy as np
#导入画图工具
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
#导入树模型和数据集加载工具
from sklearn import tree,datasets
#导入数据集拆分工具
from sklearn.model_selection import train_test_split
wine = datasets.load_wine()
#只选数据集前两个特征
X = wine.data[:,:2]
y = wine.target
#将数据集拆分为训练集和测试集
X_train,X_test,y_train,y_test = train_test_split(X,y)

用决策树分类器分类【为了便于图形演示,仍然只选取数据集样本中的前两个特征】

#设定决策树分类器最大深度为1
clf = tree.DecisionTreeClassifier(max_depth=1)
#拟合训练集数据
clf.fit(X_train,y_train)

技术图片

【结果分析】:Jupyter Notebook 把分类器的参数返回。max_depth参数,是决策树深度

分类器表现,用图形画出来

#定义图像中分区的颜色和散点图
cmap_light = ListedColormap([‘#FFAAAA‘,‘#AAFFAA‘,‘#AAAAFF‘])
cmap_bold = ListedColormap([‘#FF0000‘,‘#00FF00‘,‘#0000FF‘])
#用样本的两个特征值创建图像和横轴和纵轴
x_min,x_max =  X[:,0].min() -1,X[:,0].max() +1
y_min,y_max =  X[:,1].min() -1,X[:,1].max() +1
#用不同的背景色表示不同的分类
xx,yy = np.meshgrid(np.arange(x_min,x_max,.02),np.arange(y_min,y_max,.02))
z = clf.predict(np.c_[(xx.ravel(),yy.ravel())])
#将每个分类中的样本分配不同的颜色
z = z.reshape(xx.shape)
plt.figure()
plt.pcolormesh(xx,yy,z,cmap=cmap_light)
#用散点图把样本表示出来
plt.scatter(X[:,0],X[:,1],c=y,cmap=cmap_bold,edgecolor=‘k‘,s=20)
plt.xlim(xx.min(),xx.max())
plt.ylim(yy.min(),yy.max())
plt.title("Classifier:(max_depth= 1 )")
plt.show()

技术图片

【显然,分类器表现不太好,只分为2类】

加大深度

#设定决策树最大深度为3
clf2 = tree.DecisionTreeClassifier(max_depth = 3)
#重新拟合数据
clf2.fit(X_train,y_train)

 让max_depth=3

#定义图像中分区的颜色和散点图
cmap_light = ListedColormap([‘#FFAAAA‘,‘#AAFFAA‘,‘#AAAAFF‘])
cmap_bold = ListedColormap([‘#FF0000‘,‘#00FF00‘,‘#0000FF‘])
#用样本的两个特征值创建图像和横轴和纵轴
x_min,x_max =  X[:,0].min() -1,X[:,0].max() +1
y_min,y_max =  X[:,1].min() -1,X[:,1].max() +1
#用不同的背景色表示不同的分类
xx,yy = np.meshgrid(np.arange(x_min,x_max,.02),np.arange(y_min,y_max,.02))
z = clf2.predict(np.c_[(xx.ravel(),yy.ravel())])
#将每个分类中的样本分配不同的颜色
z = z.reshape(xx.shape)
plt.figure()
plt.pcolormesh(xx,yy,z,cmap=cmap_light)
#用散点图把样本表示出来
plt.scatter(X[:,0],X[:,1],c=y,cmap=cmap_bold,edgecolor=‘k‘,s=20)
plt.xlim(xx.min(),xx.max())
plt.ylim(yy.min(),yy.max())
plt.title("Classifier:(max_depth= 3 )")
plt.show()

技术图片

 【结果分析】:最大深度为3时,大部分分类正确

设置max_depth = 5,继续绘图:

#设定决策树最大深度为5
clf3 = tree.DecisionTreeClassifier(max_depth = 5)
#重新拟合数据
clf3.fit(X_train,y_train)
#定义图像中分区的颜色和散点图
cmap_light = ListedColormap([‘#FFAAAA‘,‘#AAFFAA‘,‘#AAAAFF‘])
cmap_bold = ListedColormap([‘#FF0000‘,‘#00FF00‘,‘#0000FF‘])
#用样本的两个特征值创建图像和横轴和纵轴
x_min,x_max =  X[:,0].min() -1,X[:,0].max() +1
y_min,y_max =  X[:,1].min() -1,X[:,1].max() +1
#用不同的背景色表示不同的分类
xx,yy = np.meshgrid(np.arange(x_min,x_max,.02),np.arange(y_min,y_max,.02))
z = clf3.predict(np.c_[(xx.ravel(),yy.ravel())])
#将每个分类中的样本分配不同的颜色
z = z.reshape(xx.shape)
plt.figure()
plt.pcolormesh(xx,yy,z,cmap=cmap_light)
#用散点图把样本表示出来
plt.scatter(X[:,0],X[:,1],c=y,cmap=cmap_bold,edgecolor=‘k‘,s=20)
plt.xlim(xx.min(),xx.max())
plt.ylim(yy.min(),yy.max())
plt.title("Classifier:(max_depth= 5 )")
plt.show()
技术图片

用graphviz库展示决策树在每一层干嘛的过程:【演示决策树的工作流程,不必要安装】

技术图片

 

 决策树的优缺点

优点

  • 很容易将模型可视化
  • 由于决策树算法对每个样本特征单独处理——> 不需要对数据进行转换
  • 不需要对数据预处理

缺点

  • 即使有预剪枝处理【使用max_depth、max_leaf_nodes参数】,还是不可避免出现过拟合问题
  • 泛化性能大打折扣

 

 

为了避免过拟合——> 使用集合学习——> 随机森林算法

 

一文看懂决策树

 决策树是一种逻辑简单的机器学习算法,它是一种树形结构,所以叫决策树。本文将介绍决策树的基本概念、决策树学习的3个步骤、3种典型的决策树算法、决策树的10个优缺点。什么是决策树?决策树是一种解决分类问题... 查看详情

统计学习方法 李航 决策树

决策树一.决策树基本描述决策树是一种基本的分类与回归方法,呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程.学习时,利用训练数据根据损失函数最小化的原则建立决策树模型.预测时,对新的数据,利用决策树模型... 查看详情

机器学习决策树

1、决策树简介1.1决策树概述决策树算法是一种基于树形结构的分类算法,它能从给定的无序的训练样本中,提炼出树型的分类模型,树形中包含判断模块和终止模块。它是一种典型的分类算法,首先对数据进行处理,利用归纳... 查看详情

大数据项目8(sklearn决策树)

决策树一、了解什么是决策树二、决策树模型三、决策树-信息增益四、信息增益比五、ID3算法六、决策树的剪枝一、了解什么是决策树分类分类树:分类标签值(天气?是否垃圾网页?)定性决策树:定... 查看详情

决策树

第5章决策树决策树(decisiontree)是一种基本的分类与回归方法。本章主要讨论用于分类的决策树。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是if-then规则的集合,也可以认为是定义... 查看详情

决策树 - 决策树如何在每个节点上选择规则

】决策树-决策树如何在每个节点上选择规则【英文标题】:DecisionTree-Howdoesdecisiontreeselectrulesoneachnode【发布时间】:2019-01-2808:16:16【问题描述】:我正在学习机器学习中的决策树算法我可以从教程中了解到,决策树在每个节点上... 查看详情

决策树(回归树)分析及应用建模

一、CART决策树模型概述(ClassificationAndRegressionTrees)    决策树是通过一系列规则对数据进行分类的过程。它提供一种在什么条件下会得到什么值的类似规则的方法。??决策树算法属于有指导的学习,即原数据必须... 查看详情

机器学习算法之决策树(上)

信息熵决策树决策树优化剪枝决策树可视化决策树直观理解比特化(Bits) 查看详情

决策树的剪枝

决策树算法原理(ID3,C4.5)决策树算法原理(CART分类树)CART回归树   决策树的剪枝是通过极小化决策树整体的损失函数。(决策树的生成只考虑局部最优,决策树的剪枝考虑全局最优)  设树T的叶节点为t,个数为|T|,该叶节... 查看详情

决策树

决策树原理对一系列问题进行if/else推导,最终实现决策决策树构建#导入numpyimportnumpyasnp#导入画图工具importmatplotlib.pyplotaspltfrommatplotlib.colorsimportListedColormap#导入树模型和数据集加载工具fromsklearnimporttree,datasets#导入数据集拆分工... 查看详情

雪饮者决策树系列决策树应用

  本篇以信息增益最大作为最优化策略来详细介绍决策树的决策流程。  首先给定数据集,见下图  注:本数据来源于网络本篇将以这些数据作为训练数据(虽然少,但足以介绍清楚原理!),下图是决策树选择特征的流... 查看详情

构建决策树

构建决策树决策树信息熵划分基尼系数划分调用CART 决策树决策树,是通过数据归纳,总结出条件判断的学习模式。如果新来一位男生/客户/面试者,根据上面的树状图就可以作出是否见面/贷款/入职的决定,所以... 查看详情

决策树学习笔记(decisiontree)

 什么是决策树?  决策树是一种基本的分类与回归方法。其主要有点事模型具有可得性,分类速度快。学习时,利用训练数据,根据损失函数最小化原则建立决策树模型;预测时,对新数据,利用决策树模型进行分类。 决... 查看详情

机器学习笔记-决策树

决策树(DecisionTree)决策树学习,建立一颗树结构的模型。此模型由一系列逻辑决策构成。在此结构中决策点代表某个属性上的决策,分支表示决策选择项,树的叶子节点是一系列联合决策的结论。决策树通过分而治之(Divideandconq... 查看详情

ml:决策树算法

...sp;在众多的分类模型中,应用最为广泛的两种分类模型是决策树模型(DecisionTreeModel)和朴素贝叶斯模型(NaiveBayesianModel,NBC)。决策树模型通过构造树来解决分类问题。首先利用训练数据集来构造一棵决策树,一旦树建立起来,... 查看详情

数据结构-决策树(分类)

数据结构-决策树一决策树的介绍二决策树的构造使用决策树做预测需要以下过程:1.信息熵2.条件熵(ConditionalEntropy)与信息增益(InformationGain)3.信息增益做特征选择的优缺点4.信息增益比(InfomationGainRatio)5.Gini系数一决... 查看详情

决策树

决策树(DTS)是一个非参数监督学习用于方法分类和回归。我们的目标是创建一个预测通过学习从数据推断出功能简单的决策规则的目标变量的值的典范。例如,在下面的例子中,决策树从数据学习来近似正弦曲线与一组,如果... 查看详情

C++ 决策树存储

】C++决策树存储【英文标题】:C++decisiontreestorage【发布时间】:2013-05-1918:36:51【问题描述】:我有一个决策树。我给这个决策树提供了一些输入值。然后决策树返回一个值。输入值可以是“孩子的数量”、“年龄”等。然后,... 查看详情