数据集按类划分_机器学习入门 123 使用信息熵寻找最优划分

06cc639180297c528aae6ec569cf73cb.png 关注" AI机器学习与深度学习算法"公众号 选择" 星标 "公众号,原创干货,第一时间送达

前言

在上一小节中介绍了一个新指标:信息熵。通过信息熵可以计算当前数据的不确定度。构建决策树时,初始状态下,根节点拥有全部的数据集。在根节点的基础上,根据划分后左右两个节点中的数据计算得到的信息熵最低为指标,找到一个合适的维度以及在这个维度上的一个阈值,然后根据找到的维度以及对应的阈值将在根节点中的全部数据集划分成两个部分,两个部分的数据分别对应两个不同的节点。对于两个新节点,再以同样的方式分别对两个新节点进行同样的划分,这个过程递归下去就形成了决策树。本小节主要通过代码来模拟使用信息熵作为指标的划分方式。

sklearn中的决策树

回顾使用 sklearn 中封装好的决策树对鸢尾花数据集进行训练,通过绘制训练好的决策树的决策边界来更加直观的可视化在各个节点上划分的维度以及对应的阈值。

使用 sklearn.datasets 模块中的 load_iris 方法加载鸢尾花数据集,为了方便可视化,只选取鸢尾花数据集的最后两个特征。

In[1]: from sklearn import datasets
       iris = datasets.load_iris()
       # 只选取petal length和petal width两个特征
       X = iris.data[:, 2:]
       y = iris.target

有了数据集,可以在 sklearn.tree 中导入 DecisionTreeClassifier 决策树分类器。在实例化决策树分类器时,指定两个参数:

  • max_depth: 决策树的最大深度,深度越大,模型越容易过拟合;
  • criterion: 决策树的划分标准,其中 entropy 为信息熵,gini 为基尼系数;
 In[2]: from sklearn.tree import DecisionTreeClassifier

        dt_clf = DecisionTreeClassifier(max_depth=2, 
                                        criterion="entropy", 
                                        random_state=42)
        dt_clf.fit(X, y)
Out[2]: DecisionTreeClassifier(class_weight=None, 
            criterion='entropy', max_depth=2,
            max_features=None, max_leaf_nodes=None,
            min_impurity_decrease=0.0, min_impurity_split=None,
            min_samples_leaf=1, min_samples_split=2,
            min_weight_fraction_leaf=0.0, presort=False, random_state=None,
            splitter='best')

训练好了决策树,接下来可以使用 plot_decision_boundary 方法来绘制决策边界,与此同时将只包含后两个特征的原始数据集也绘制出来。

In[4]: import numpy as n
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值