西瓜书——决策树

2024-08-21 10:48
文章标签 决策树 西瓜

本文主要是介绍西瓜书——决策树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

决策树(DT)是用于分类和回归的非参数监督学习方法。目标是创建一个模型,通过学习从数据特征推断出的简单决策规则来预测目标变量的值。

例如,在下面的示例中,决策树从数据中学习以使用一组if-then-else决策规则来近似正弦曲线。树越深,决策规则越复杂,模型越适合。

../_images/sphx_glr_plot_tree_regression_0011.png

决策树的一些优点是:

  • 易于理解和解释。树木可以看到。
  • 需要很少的数据准备。其他技术通常需要数据规范化,需要创建虚拟变量并删除空值。但请注意,此模块不支持缺失值。
  • 使用树的成本(即,预测数据)是用于训练树的数据点的数量的对数。
  • 能够处理数字和分类数据。其他技术通常专门用于分析仅具有一种变量类型的数据集。有关更多信息,请参阅算法
  • 能够处理多输出问题。
  • 使用白盒模型。如果在模型中可以观察到给定的情况,则可以通过布尔逻辑轻松解释条件。相反,在黑盒模型中(例如,在人工神经网络中),结果可能更难以解释。
  • 可以使用统计测试验证模型。这使得可以考虑模型的可靠性。
  • 即使其假设在某种程度上违反了生成数据的真实模型,也表现良好。

决策树的缺点包括:

  • 决策树学习者可以创建过于复杂的树,这些树不能很好地推广数据。这称为过度拟合。修剪(当前不支持),设置叶节点所需的最小样本数或设置树的最大深度等机制是避免此问题所必需的。
  • 决策树可能不稳定,因为数据中的小变化可能导致生成完全不同的树。通过在集合内使用决策树来减轻此问题。
  • 已知在最优性的几个方面甚至对于简单的概念,学习最优决策树的问题是NP完全的。因此,实际的决策树学习算法基于启发式算法,例如贪婪算法,其中在每个节点处进行局部最优决策。这种算法不能保证返回全局最优决策树。这可以通过在集合学习器中训练多个树来减轻,其中特征和样本随替换而随机采样。
  • 有些概念很难学习,因为决策树不容易表达它们,例如XOR,奇偶校验或多路复用器问题。
  • 如果某些类占主导地位,决策树学习者会创建偏向的树。因此,建议在拟合决策树之前平衡数据集。
#coding:utf-8
from sklearn import  tree
import graphviz
X=[[0,0],[1,1]]
Y=[0,1]
'''
(criterion='gini', splitter='best', max_depth=None, min_samples_split=2,
min_samples_leaf =1, min_weight_fraction_leaf=0.0, max_features=None, 
random_state=None, max_leaf_nodes=None,class_weight=None, presort=False)criterion='gini'是默认的,也可以是entropy
splitter 默认是best,最好的分类,也可以是随机分类random
max_features=int,float,string,or none
max_depth:int or none,表示树的最大深度,如果是"None",则节点会一直扩展直到所有的叶子都是纯的
或者所有的叶子节点都包含少于min_samples_split个样本点。忽视max_leaf_nodes是不是为None。
min_samples_split:int,float,可选(默认为2)
区分一个内部节点需要的最少的样本数。    
1.如果是int,将其最为最小的样本数。
2.如果是float,min_samples_split是一个百分率并且ceil(min_samples_split*n_samples)是
每个分类需要的样本数。ceil是取大于或等于指定表达式的最小整数。
min_samples_leaf:int,float,可选(默认为1)
一个叶节点所需要的最小样本数:
1.如果是int,则其为最小样本数
2.如果是float,则它是一个百分率并且ceil(min_samples_leaf*n_samples)是每个节点所需的样本数。
min_weight_fraction_leaf:float,可选(默认为0)
一个叶节点的输入样本所需要的最小的加权分数。
min_weight_fraction_leaf:float,可选(默认为0)
一个叶节点的输入样本所需要的最小的加权分数。
max_leaf_nodes:int,None 可选(默认为None)
在最优方法中使用max_leaf_nodes构建一个树。最好的节点是在杂质相对减少。
如果是None则对叶节点的数目没有限制。如果不是None则不考虑max_depth.
random_state:int,RandomState instance or None
如果是int,random_state 是随机数字发生器的种子;
如果是RandomState,random_state是随机数字发生器,如果是None,
随机数字发生器是np.random使用的RandomState instance.
persort:bool,可选(默认为False)
是否预分类数据以加速训练时最好分类的查找。在有大数据集的决策树中,
如果设为true可能会减慢训练的过程。当使用一个小数据集或者一个深度受限的决策树中,
可以减速训练的过程。
'''
clf=tree.DecisionTreeClassifier()
clf=clf.fit(X,Y)
print(clf.predict([[2,2]]))from sklearn.datasets import load_iris
iris=load_iris()
clf=tree.DecisionTreeClassifier()
clf=clf.fit(iris.data,iris.target)
dot_data=tree.export_graphviz(clf,out_file=None)
graph=graphviz.Source(dot_data)
#graph.render("iris")dot_data = tree.export_graphviz(clf, out_file=None,feature_names=iris.feature_names,class_names=iris.target_names,filled=True, rounded=True,special_characters=True)
graph = graphviz.Source(dot_data)

 

这篇关于西瓜书——决策树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1092946

相关文章

决策树的实现原理与matlab代码

很久不写博客了,感觉很长一段时间只是一味的看书,疏不知一味地看书、写代码会导致自己的思考以及总结能力变得衰弱。所以,我决定还是继续写博客。废话不多说了,今天想主要记录数据挖掘中的决策树。希望能够将自己的理解写得通俗易懂。 决策树是一种对实例分类的树形结构,树中包含叶子节点与内部节点。内部节点主要是数据中的某一特性,叶子节点是根据数据分析后的最后结果。 先看一组数据: 这组数据的特性包含

机器学习(西瓜书)第 4 章决策树

4.1 决策树基本流程 决策树模型 基本流程 在第⑵种情形下,我们把当前结点标记为叶结点,并将其类别设定为该结点所含样本最多的类别;在第⑶种情形下,同样把当前结点标记为叶结点,但将其类别设定为其父结点所含样本最多的类别.注意这两种情形的处理实质不同:情形⑵是在利用当前结点的后验分布,而情形⑶则是把父结点的样本分布作为当前结点的先验分布. 基本算法 由算法4 .2可看出,决策树学习

【机器学习-监督学习】决策树

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科,通过算法和模型让计算机从数据中学习,进行模型训练和优化,做出预测、分类和决策支持。Python成为机器学习的首选语言,依赖于强大的开源库如Scikit-learn、TensorFlow和PyTorch。本专栏介绍机器学习的相关算法以及基于Python的算法实现。

Spark2.x 入门:决策树分类器

一、方法简介 ​ 决策树(decision tree)是一种基本的分类与回归方法,这里主要介绍用于分类的决策树。决策树模式呈树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。学习时利用训练数据,根据损失函数最小化的原则建立决策树模型;预测时,对新的数据,利用决策树模型进行分类。 决策树学习通常包括3个步骤:特征选择、决策树的生成和决策树的剪枝。

第L5周:机器学习:决策树(分类模型)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目标: 1. 决策树算法是一种在机器学习和数据挖掘领域广泛应用的强大工具,它模拟人类决策过程,通过对数据集进行逐步的分析和判定,最终生成一颗树状结构,每个节点代表一个决策或一个特征。决策树的核心思想是通过一系列问题将数据集划分成不同的类别或值,从而实现对未知数据的预测和分类。这一算法的开发灵感源自人类在解决问题

机器学习项目——基于机器学习(决策树 随机森林 朴素贝叶斯 SVM KNN XGBoost)的帕金森脑电特征识别研究(代码/报告材料)

完整的论文代码见文章末尾 以下为核心内容和部分结果 问题背景 帕金森病(Parkinson’s Disease, PD)是一种常见的神经退行性疾病,其主要特征是中枢神经系统的多巴胺能神经元逐渐丧失,导致患者出现运动障碍、震颤、僵硬等症状。然而,除运动症状外,帕金森病患者还常常伴有一系列非运动症状,其中睡眠障碍是最为显著的非运动症状之一。 脑电图(Electroencephalogram, E

分类预测|基于蜣螂优化极限梯度提升决策树的数据分类预测Matlab程序DBO-Xgboost 多特征输入单输出 含基础模型

分类预测|基于蜣螂优化极限梯度提升决策树的数据分类预测Matlab程序DBO-Xgboost 多特征输入单输出 含基础模型 文章目录 一、基本原理1. 数据准备2. XGBoost模型建立3. DBO优化XGBoost参数4. 模型训练5. 模型评估6. 结果分析与应用原理总结 二、实验结果三、核心代码四、代码获取五、总结 分类预测|基于蜣螂优化极限梯度提升决策树的数据分类

《西瓜书》第六章 公式6.6 凸二次规划问题

1. 凸优化问题 对于一般的非线性规划,若目标函数是凸函数,约束集合 D D D 是凸集,则称该非线性规划是凸规划。 若上述约束规划中只含有不等式约束,又 c i ( x ) ( i ∈ I ) c_i(x)(i∈I) ci​(x)(i∈I)是凸函数,则约束集 D D D 是凸集。 对于混合约束问题,若 c i ( x ) ( i ∈ E ) c_i(x)(i∈E) ci​(x)(i∈E

《西瓜书》第六章 SVM支持向量机 笔记

文章目录 6.1 间隔与支持向量6.1.1 超平面6.1.2 支持向量6.1.3 间隔6.1.4 最大间隔 6.2 对偶问题6.2.1 凸二次规划6.2.2 对偶问题6.2.3 支持向量机的一个重要性质 6.3 核函数6.3.1 支持向量展开式6.3.2 核函数定理6.3.3 常用的核函数6.3.4 核函数特点 6.4 软间隔与正则化6.4.1 硬间隔6.4.2 软间隔6.4.3 替代损失6

《西瓜书》第四章 决策树 笔记

文章目录 4.1 基本流程4.1.1 组成4.1.2 目的4.1.3 策略4.1.4 算法 4.2 划分选择4.2.1信息增益-ID3决策树4.2.1.1 信息熵4.2.1.1 信息增益 4.2.2 增益率-C4.5决策树4.2.3 基尼指数-CART决策树4.2.3.1 基尼值4.2.3.2 基尼指数 4.3 剪枝处理4.3.1 预剪枝4.3.2 后剪枝 4.4 连续与缺失值4.4.1