sklearn DecisionTree原理及实例

本文介绍了决策树的基本原理,包括信息增益和ID3算法,阐述了如何根据属性选择度量构建决策树。同时,讨论了决策树在机器学习中的优缺点,如计算复杂度低、易于理解和处理缺失值,以及可能存在的过拟合问题。最后,通过一个回归预测椭圆的实例展示了决策树的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

决策树
原理:树,信息增益
不同于逻辑斯蒂回归和贝叶斯算法,决策树的构造过程不依赖领域知识,它使用属性选择度量来选择将元组最好地划分成不同的类的属性。所谓决策树的构造就是进行属性选择度量确定各个特征属性之间的拓扑结构。
构造决策树的关键步骤是分裂属性。所谓分裂属性就是在某个节点处按照某一特征属性的不同划分构造不同的分支,其目标是让各个分裂子集尽可能地“纯”。尽可能“纯”就是尽量让一个分裂子集中待分类项属于同一类别。分裂属性分为三种不同的情况:

  • 1、属性是离散值且不要求生成二叉决策树。此时用属性的每一个划分作为一个分支。
  • 2、属性是离散值且要求生成二叉决策树。此时使用属性划分的一个子集进行测试,按照“属于此子集”和“不属于此子集”分成两个分支。
  • 3、属性是连续值。此时确定一个值作为分裂点split_point,按照>split_point和<=split_point生成两个分支。
    构造决策树的关键性内容是进行属性选择度量,属性选择度量是一种选择分裂准则,它决定了拓扑结构及分裂点split_point的选择。属性选择度量算法有很多,一般使用自顶向下递归分治法,并采用不回溯的贪心策略。这里介绍ID3算法。

ID3算法
划分数据集的大原则是:将无序的数据变得更加有序
组织杂乱无章数据的一种方法就是使用信息论度量信息,信息论是量化处理信息的分支科学。我们可以在划分数据之前使用信息论量化度量信息的内容。
在划分数据集之前之后信息发生的变化称为信息增益,知道如何计算信息增益,我们就可以计算每个特征值划分数据集获得的信息增益,获得信息增益最高的特征就是最好的选择。
在可以评测哪种数据划分方式是最好的数据划分之前,我们必须学习如何计算信息增益。集合信息的度量方式称为香农熵或者简称为熵
在这里插入图片描述

决策树的优缺点

  • 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据。既能用于分类,也能用于回归
  • 缺点:可能会产生过度匹配问题

实例:使用回归预测椭圆

from sklearn.tree import DecisionTreeClassifier
import sklearn.datasets as datasets
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
X_train = np.linspace(-100,100,100)       # 训练值
#正弦值,和余弦值可以看成圆上面的一个点(sin(x)^2 + cos(x)^2 = 1),x1 y1 组成的点相当于目标值
x1 = np.sin(x)
y1 = np.cos(x)
y1[::5] += np.random.randn(20)*0.2          # 添加噪声
X_test = np.linspace(-100,100,10000).reshape((10000,1))         # 测试数据 (10000,1)
dt = DecisionTreeRegressor()          # 使用决策树回归模型
dt.fit(X_train.reshape((100,1)), np.c_[x1,y1])  
y_ = dt.predict(X_test)                    # 预测出的圆上面的点 (10000,2)

%matplotlib inline
plt.scatter(y_[:,0], y1_[:,1], c = "red", alpha = 0.3)
plt.scatter(x1,y1, alpha  = 0.2)
plt.axis("equal")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值