精华内容
下载资源
问答
  • 常用决策树算法总结

    千次阅读 2019-02-16 15:20:28
    决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。 使用决策树进行决策的过程...

    算法思想
    决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。

    使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。

    总结来说:决策树模型核心是下面几部分:结点和有向边组成
    结点有内部结点和叶结点俩种类型内部结点表示一个特征,叶节点表示一个类。

    在这里插入图片描述
    下面介绍一下三种主要的决策树算法:ID3,C4.5,CART

    ID3

    ID3 的构造准则是信息增益。
    在这里插入图片描述
    在这里插入图片描述

    C4.5

    C4.5的构造准则是信息增益比。
    在这里插入图片描述

    CART

    CART 的构造准则是基尼指数。
    在这里插入图片描述
    在这里插入图片描述

    决策树不同算法的对比

    在这里插入图片描述
    参考资料:
    1.https://zhuanlan.zhihu.com/p/26703300
    2.《统计学习方法》李航
    3.《百面机器学习》

    展开全文
  • 几个常用机器学习算法 - 决策树算法本篇博客涉及到的信息论概念 - 熵和信息增益 - 可以参考这里。1决策树算法(Decision Tree)是从训练数据集中归纳出一组分类规则的过程。 实际操作中,与训练数据集不相矛盾的...

    几个常用机器学习算法 - 决策树算法

    本篇博客涉及到的信息论概念 - 熵和信息增益 - 可以参考这里

    1

    决策树算法(Decision Tree)是从训练数据集中归纳出一组分类规则的过程。
    实际操作中,与训练数据集不相矛盾的决策树可能有多个,也可能一个都没有;理想情况是找到一个与训练数据矛盾较小的决策树,同时也具有良好的泛化能力。

    2

    • 决策树结构:
      • 有向边
      • 节点
        -内部节点: 数据的特征
        -叶节点:数据的类别
    • 决策树准则:每个实例都被一条路径覆盖,且仅被一条路径覆盖

    3

    决策树算法过程

    • 特征选择
      • 决策树生成过程就是划分数据集的过程,合适地选取特征能帮助我们将数据集从无序数据组织为有序;
      • 有很多方法可以划分数据集,决策树算法根据信息论来度量信息;
      • 信息论中有很多概念,不同的决策树生成算法使用不同的信息论概念来进行特征选择。
    • 决策树生成

      • 有诸如ID3, C4.5, CART等算法用于生成决策树;
      • ID3和CART4.5的差别在于用于特征选择的度量的不同
        -ID3使用信息增益进行特征选择
        -C4.5使用信息增益比进行特征选择
        -以上两个算法流程:迭代的寻找当前特征中最好的特征进行数据划分,直到所有特征用尽或者划分后的数据的熵足够小。

        ID3核心思想:信息增益越大说明该特征对于减少样本的不确定性程度的能力越大,也就代表这个特征越好。

        C4.5核心思想:某些情况(比如按照身份证号、信用卡号、学号对数据进行分类)构造的树层数太浅而分支又太多,而这样的情况对数据的分类又往往没有意义,所以引入信息增益比来对分支过多的情况进行适当“惩罚”。具体情景解释可见这篇博客

      • CART我还没了解过,暂不介绍

    4

    决策树生成算法得到的树对训练数据的分类很准确,但对未知数据的分类却没那么准确,容易过拟合;因为决策树考虑的特征太多,构建得太复杂。
    所以我们需要对决策树进行剪枝:从已生成的树上裁掉一些子树或叶节点,并将其根节点或父节点作为新的叶节点,以此简化树。

    剪枝算法很多,这里引入一种简单的:极小化决策树整体的损失函数。

    设树 T 的叶节点个数为 |T|, t 是树 T 的叶节点,该叶节点有Nt个样本点,其中 k 类的样本点有Ntk个, k = 1,2,…,k, Ht(T)是叶节点 t 上的经验熵,α0为参数,决策树的损失函数可定义如下

    Cα(T)=t=1|T|NtHt(T)+α|T|

    而经验熵为
    Ht(T)=kNtkNtlogNtkNt

    其中,为了简洁,令
    C(T)=t=1|T|NtHt(T)=t=1|T|k=1KNtklogNtkNt

    所以,上面的损失函数可以记为

    Cα(T)=C(T)+α|T|

    各个符号定义如下:

    • C(T) 表示模型对训练数据的预测误差,即拟合程度
    • |T| 表示模型复杂度
    • α控制以上两者之间的平衡
      • α确定时,树越大,与训练数据的拟合就越好,C(T)越小,但是树的复杂度也会上升,|T| 上升;而树越小,树的复杂度就越低,|T| 越小,但往往和训练数据的拟合程度不好,C(T) 又会上升
      • 较大的α使得生成较简单的树,较小的α使得生成较复杂的树,当α=0,就完全不考虑树的复杂度了,相当于不进行剪枝操作
      • 决策树生成只考虑提高信息增益来更好拟合训练数据,但决策树剪枝则通过优化损失函数来减少树的复杂度;可以说决策树生成学习的是局部模型,而决策树剪枝学习的是整体模型

    剪枝算法流程

    • 计算每个节点的经验熵
    • 递归地从树的叶节点向上回缩:设一组叶节点
      回缩到父节点前后的整体树分别是TBTA,其对应的损失函数值分别是Cα(TB)Cα(TA),如果

      Cα(TB)Cα(TA)

      那么将父节点变为新的叶节点,即剪枝

    • 重复执行步骤2,直到不能再继续为止,得到损失函数最小的子树Tα

    5

    代码部分,先挖个坑。。。过段时间回来填


    本篇博客参考自:
    《我们为什么需要信息增益比,而不是信息增益?》
    统计学习方法 - 李航

    展开全文
  • I . 决策树模型 II . 决策树模型 示例 III . 决策树算法列举 IV . 决策树算法 示例 V . 决策树算法性能要求 VI . 决策树模型创建 ( 递归创建决策树 ) VII . 决策树 树根属性 选择



    I . 决策树模型



    1 . 决策树 : 决策时基于 “树” 结构 , 这也是模拟人在进行决策时采用的策略 ;


    2 . 决策树组成 : 根节点 , 内部节点 , 叶子节点 , 这些节点都是数据的 属性 ( 特征 ) ;


    ① 根节点 : 最初始判定的属性 , 判定区域是全局的数据集 ;

    ② 内部节点 : 中间的判定属性 , 判定区域是符合某些特征的子数据集 ;

    ② 叶子节点 : 决策结果 , 位于决策树的最底层 , 每个叶子节点都是一个决策结果 ;


    3 . 决策树模型过程 :


    ① 训练过程 : 使用训练集数据确定决策时使用的属性 , 确定根节点 , 内部节点 , 叶子节点 的属性划分 , 训练决策树模型 ;

    ② 预测过程 : 从根节点特征开始 , 根据决策树中的判定序列依次从根节点向下判定 , 直到一个叶子节点 ;



    II . 决策树模型 示例



    1 . 需求场景 :


    ① 需求 : 电商网站为用户进行分类 , 目的是确定该用户是否有可能购买某件商品 , 然后为其推送指定商品的广告 ;

    ② 决策树使用 : 如何对用户进行分类 , 这里就用到了决策树模型 , 将用户分成不同的类别 ;


    2 . 数据集 : 决策过程中 , 根据每个节点所处理的数据集的特征 , 将其划分到不同的子节点中进行处理 ; 如数据集中是 100 个用户的信息 ;


    3 . 决策树构成 :


    ① 根节点决策 : 根节点 处理年龄特征 , 小于 30 岁的用户划分到一组 , 大于 30 岁的用户划分到另一组 ;

    ② 内部节点决策 : 然后在 小于 30 岁的用户中继续判定 , 学生划分成一组 , 非学生划分成一组 ;

    ③ 叶子节点决策结果 : 学生会买电脑 , 非学生不会买电脑 ;

    在这里插入图片描述



    III . 决策树算法列举



    1 . 常用的决策树算法 :


    ① CLS 算法 : 这是第一个决策树算法 , 1966 年提出 ;

    ② ID3 算法 : 该算法使决策树称为机器学习主流技术 , 1979 年提出 ;

    ③ C4.5 算法 : 最常用的决策树算法 ; 1993 年提出 ;

    ④ 区别 : 上述三个算法五个组件基本一致 , 唯一的区别是确定属性划分时的策略不同 , 即将哪个属性放在树根 , 将哪个属性放在内部节点上 , 内部节点的属性所在层级如何设置 ;


    2 . 属性划分策略 :


    ① ID3 算法属性划分策略 : ID3 使用信息增益策略 ;

    ② C4.5 算法属性划分策略 : C4.5 使用的是增益率策略 ;


    3 . CART 算法 : 既可以用于分类任务 ( 结果是离散值 ) , 也可以用于回归任务 ( 结果是连续值 ) ;


    4 . FR 算法 : 随机森林算法 ; 使用了数据挖掘 , 机器学习中的集成思想 ; 有很多差的分类器 , 准确率都很低 , 但是多个分类器集成起来 , 准确率就很高 ;



    IV . 决策树算法 示例



    1 . 需求场景 :


    ① 需求 : 电商网站为用户进行分类 , 目的是确定该用户是否有可能购买某件商品 , 然后为其推送指定商品的广告 ;

    ② 决策树使用 : 如何对用户进行分类 , 这里就用到了决策树模型 , 将用户分成不同的类别 , 买的一类 , 和不买的一类 ;


    2 . 模拟数据集 : 给出一组数据集 , 后面的所有计算都是基于该数据集进行的 ;

    需求 : 根据 年龄 , 收入水平 , 是否是学生 , 信用等级 , 预测该用户是否会购买商品 ;


    年龄 收入水平 是否是学生 信用等级 是否购买商品
    小于 30 岁 高收入 不是 一般 不会
    小于 30 岁 高收入 不是 很好 不会
    31 ~ 39 岁 高收入 不是 一般
    40 岁以上 中等收入 不是 一般
    40 岁以上 低收入 一般
    40 岁以上 低收入 很好 不会
    31 ~ 40 岁 低收入 不是 很好
    小于 30 岁 中等收入 不是 一般 不会
    小于 30 岁 低收入 一般
    40 岁以上 中等收入 一般
    小于 30 岁 中等收入 很好
    31 ~ 39 岁 中等收入 不是 很好
    31 ~ 39 岁 高收入 一般
    40 岁以上 中等收入 不是 很好 不会

    3 . 决策树模型 :

    建立模型 : 将上述数据集的 属性 ( 特征 ) 转换为树状的模型 ;

    确定树根 : 首先要确定哪个属性作为树根 , 这个选择是有一定要求的 , 不能随意指定一个任意的特征作为树根 ;


    4 . 决策树 属性划分 :

    属性划分策略 : 根据一定的策略 , 确定哪个属性作为树根 , 然后每个子树 , 在确定剩余的哪个属性作为子树的树根 , 这是递归问题 ;

    属性划分的算法性质 : 递归算法 ;

    如何决定树根属性 : 确定总树的树根 , 及每个子树的树根 , 要求根据数据的 属性 ( 特征 ) 进行的决策次数尽量能做到最少 ;

    在这里插入图片描述



    V . 决策树算法性能要求



    1 . 决策树的高度 :


    ① 决策树最大高度 : 决策属性的个数 ; ( 每个属性都要决策一次 , 才能预测出结果 )

    ② 决策时最小高度 : 1 ; ( 只需要决策一次 , 就可以预测出结果 )


    2 . 决策树性能 : 决策树越矮越好 , 即预测某特征 , 进行的决策次数越少越好 ;


    3 . 树根属性 : 越重要的属性 , 其越能将数据最大可能拆分开 , 将重要的属性放在树根 ;



    VI . 决策树模型创建 ( 递归创建决策树 )



    1 . 决策树模型创建 : 决策树模型创建的核心就是选择合适的树根 , 将重要的属性放在树根 , 然后子树中 , 继续选择子树中重要的属性放在子树的树根 , 依次递归 , 最终得到决策结果 ( 叶子节点 ) ;


    2 . 决策树创建算法 ( 递归 ) : 使用递归算法 , 递归算法分为递归操作 和 递归停止条件 ;


    3 . 递归操作 : 每个步骤先选择属性 , 选择好属性后 , 根据 总树 ( 子树 ) 的树根属性划分训练集 ;


    ① 选择属性 : 递归由上到下决定每一个节点的属性 , 依次递归构造决策树 ;

    ② 数据集划分 : 开始决策时 , 所有的数据都在树根 , 由树根属性来划分数据集 ;

    ③ 属性离散化 : 如果属性的值是连续值 , 需要将连续属性值离散化 ; 如 : 100 分满分 , 将 60 分以下分为不及格数据 , 60 分以上分为及格数据 ;


    4 . 递归停止的条件 :


    ① 子树分类完成 : 节点上的子数据集都属于同一个类别 , 该节点就不再向下划分 , 称为叶子节点 ;

    ② 属性 ( 节点 ) 全部分配完毕 : 所有的属性都已经分配完毕 , 决策树的高度等于属性个数 ;

    ③ 所有样本分类完毕 : 所有的样本数据集都分类完成 ;



    VII . 决策树 树根属性 选择



    1 . 属性选择方法 : 树根属性选择的方法很多 , 这里介绍一种常用的方法 , 信息增益 ;


    2 . 信息增益 : 信息增益 效果越大 , 其作为树根属性 , 划分的数据集分类效果越明显 ;


    3 . 信息 和 熵 : 涉及 信息论 的知识点 , 建议有空就去 B站 刷一下信息论课程 ;


    ① 信息 与 熵 的关系 : 信息 会 消除 熵 , 熵 代表了不确定性 , 信息用来消除不确定性 ;

    ② 信息增益 : 信息增益大的属性 , 能最大消除熵的不确定性 ;


    4 . 决策树中的信息增益 : 属性的 信息增益 越大 , 就越能将分类效果达到最大 ;

    如 : 想要从用户数据集中找到是否能买奢侈品的用户 , 先把高收入群体划分出来 , 将低收入者从数据集中去除 , 这个收入水平的属性 ( 特征 ) , 信息增益就很大 ;

    展开全文
  • 决策树算法

    千次阅读 多人点赞 2021-01-12 21:45:17
    决策树算法 一、决策树算法简介 二、决策树分类原理 1.熵 概念 案例 2.决策树的划分依据一----信息增益 概念 案例: 3.决策树的划分依据二----信息增益率 概念 案例 案例一 案例二 为什么...

    决策树算法

    一、决策树算法简介

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    二、决策树分类原理

    1.熵

    概念

    在这里插入图片描述
    在这里插入图片描述

    案例

    在这里插入图片描述
    在这里插入图片描述

    2.决策树的划分依据一----信息增益

    概念

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    案例:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    3.决策树的划分依据二----信息增益率

    概念

    在这里插入图片描述

    案例

    案例一

    在这里插入图片描述
    在这里插入图片描述

    案例二

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    为什么使用C4.5要好

    在这里插入图片描述

    4.决策树的划分依据三 ----基尼值和基尼指数

    概念

    在这里插入图片描述

    案例

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    5.小结

    常见决策树的启发函数比较

    在这里插入图片描述
    在这里插入图片描述

    ID3 算法

    在这里插入图片描述

    C4.5算法

    在这里插入图片描述

    CART算法

    在这里插入图片描述

    多变量决策树(multi-variate decision tree)

    在这里插入图片描述

    决策树变量的两种类型:

    在这里插入图片描述

    如何评估分割点的好坏?

    在这里插入图片描述

    三、cart剪枝

    1.为什么要剪枝

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2.常用的减枝方法

    在这里插入图片描述

    预剪枝

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    后剪枝:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    3.小结

    在这里插入图片描述

    四、特征工程-特征提取

    在这里插入图片描述

    1.特征提取

    定义

    在这里插入图片描述

    特征提取API

    在这里插入图片描述

    2.字典特征提取

    在这里插入图片描述

    应用

    在这里插入图片描述

    流程分析

    在这里插入图片描述

    from sklearn.feature_extraction import DictVectorizer
    
    def dict_demo():
        """
        对字典类型的数据进行特征抽取
        :return: None
        """
        data = [{'city': '北京','temperature':100}, {'city': '上海','temperature':60}, {'city': '深圳','temperature':30}]
        # 1、实例化一个转换器类
        transfer = DictVectorizer(sparse=False)
        # 2、调用fit_transform
        data = transfer.fit_transform(data)
        print("返回的结果:\n", data)
        # 打印特征名字
        print("特征名字:\n", transfer.get_feature_names())
    
        return None
    

    在这里插入图片描述
    在这里插入图片描述

    总结

    对于特征当中存在类别信息的我们都会做one-hot编码处理

    3.文本特征提取

    在这里插入图片描述

    应用

    在这里插入图片描述

    流程分析

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    jieba分词处理

    在这里插入图片描述

    案例分析

    在这里插入图片描述

    from sklearn.feature_extraction.text import CountVectorizer
    import jieba
    
    def cut_word(text):
        """
        对中文进行分词
        "我爱北京天安门"————>"我 爱 北京 天安门"
        :param text:
        :return: text
        """
        # 用结巴对中文字符串进行分词
        text = " ".join(list(jieba.cut(text)))
    
        return text
    
    def text_chinese_count_demo2():
        """
        对中文进行特征抽取
        :return: None
        """
        data = ["一种还是一种今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。",
                "我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。",
                "如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。"]
        # 将原始数据转换成分好词的形式
        text_list = []
        for sent in data:
            text_list.append(cut_word(sent))
        print(text_list)
    
        # 1、实例化一个转换器类
        # transfer = CountVectorizer(sparse=False)
        transfer = CountVectorizer()
        # 2、调用fit_transform
        data = transfer.fit_transform(text_list)
        print("文本特征抽取的结果:\n", data.toarray())
        print("返回特征名字:\n", transfer.get_feature_names())
    
        return None
    

    返回结果:

    Building prefix dict from the default dictionary ...
    Dumping model to file cache /var/folders/mz/tzf2l3sx4rgg6qpglfb035_r0000gn/T/jieba.cache
    Loading model cost 1.032 seconds.
    ['一种 还是 一种 今天 很 残酷 , 明天 更 残酷 , 后天 很 美好 , 但 绝对 大部分 是 死 在 明天 晚上 , 所以 每个 人 不要 放弃 今天 。', '我们 看到 的 从 很 远 星系 来 的 光是在 几百万年 之前 发出 的 , 这样 当 我们 看到 宇宙 时 , 我们 是 在 看 它 的 过去 。', '如果 只用 一种 方式 了解 某样 事物 , 你 就 不会 真正 了解 它 。 了解 事物 真正 含义 的 秘密 取决于 如何 将 其 与 我们 所 了解 的 事物 相 联系 。']
    Prefix dict has been built succesfully.
    文本特征抽取的结果:
     [[2 0 1 0 0 0 2 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 2 0 1 0 2 1 0 0 0 1 1 0 0 1 0]
     [0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 3 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 1]
     [1 1 0 0 4 3 0 0 0 0 1 1 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 2 1 0 0 1 0 0 0]]
    返回特征名字:
     ['一种', '不会', '不要', '之前', '了解', '事物', '今天', '光是在', '几百万年', '发出', '取决于', '只用', '后天', '含义', '大部分', '如何', '如果', '宇宙', '我们', '所以', '放弃', '方式', '明天', '星系', '晚上', '某样', '残酷', '每个', '看到', '真正', '秘密', '绝对', '美好', '联系', '过去', '还是', '这样']
    

    在这里插入图片描述

    Tf-idf文本特征提取

    在这里插入图片描述

    公式

    在这里插入图片描述

    案例
    from sklearn.feature_extraction.text import TfidfVectorizer
    import jieba
    
    def cut_word(text):
        """
        对中文进行分词
        "我爱北京天安门"————>"我 爱 北京 天安门"
        :param text:
        :return: text
        """
        # 用结巴对中文字符串进行分词
        text = " ".join(list(jieba.cut(text)))
    
        return text
    
    def text_chinese_tfidf_demo():
        """
        对中文进行特征抽取
        :return: None
        """
        data = ["一种还是一种今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。",
                "我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。",
                "如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。"]
        # 将原始数据转换成分好词的形式
        text_list = []
        for sent in data:
            text_list.append(cut_word(sent))
        print(text_list)
    
        # 1、实例化一个转换器类
        # transfer = CountVectorizer(sparse=False)
        transfer = TfidfVectorizer(stop_words=['一种', '不会', '不要'])
        # 2、调用fit_transform
        data = transfer.fit_transform(text_list)
        print("文本特征抽取的结果:\n", data.toarray())
        print("返回特征名字:\n", transfer.get_feature_names())
    
        return None
    

    返回结果:

    Building prefix dict from the default dictionary ...
    Loading model from cache /var/folders/mz/tzf2l3sx4rgg6qpglfb035_r0000gn/T/jieba.cache
    Loading model cost 0.856 seconds.
    Prefix dict has been built succesfully.
    ['一种 还是 一种 今天 很 残酷 , 明天 更 残酷 , 后天 很 美好 , 但 绝对 大部分 是 死 在 明天 晚上 , 所以 每个 人 不要 放弃 今天 。', '我们 看到 的 从 很 远 星系 来 的 光是在 几百万年 之前 发出 的 , 这样 当 我们 看到 宇宙 时 , 我们 是 在 看 它 的 过去 。', '如果 只用 一种 方式 了解 某样 事物 , 你 就 不会 真正 了解 它 。 了解 事物 真正 含义 的 秘密 取决于 如何 将 其 与 我们 所 了解 的 事物 相 联系 。']
    文本特征抽取的结果:
     [[ 0.          0.          0.          0.43643578  0.          0.          0.
       0.          0.          0.21821789  0.          0.21821789  0.          0.
       0.          0.          0.21821789  0.21821789  0.          0.43643578
       0.          0.21821789  0.          0.43643578  0.21821789  0.          0.
       0.          0.21821789  0.21821789  0.          0.          0.21821789
       0.        ]
     [ 0.2410822   0.          0.          0.          0.2410822   0.2410822
       0.2410822   0.          0.          0.          0.          0.          0.
       0.          0.2410822   0.55004769  0.          0.          0.          0.
       0.2410822   0.          0.          0.          0.          0.48216441
       0.          0.          0.          0.          0.          0.2410822
       0.          0.2410822 ]
     [ 0.          0.644003    0.48300225  0.          0.          0.          0.
       0.16100075  0.16100075  0.          0.16100075  0.          0.16100075
       0.16100075  0.          0.12244522  0.          0.          0.16100075
       0.          0.          0.          0.16100075  0.          0.          0.
       0.3220015   0.16100075  0.          0.          0.16100075  0.          0.
       0.        ]]
    返回特征名字:
     ['之前', '了解', '事物', '今天', '光是在', '几百万年', '发出', '取决于', '只用', '后天', '含义', '大部分', '如何', '如果', '宇宙', '我们', '所以', '放弃', '方式', '明天', '星系', '晚上', '某样', '残酷', '每个', '看到', '真正', '秘密', '绝对', '美好', '联系', '过去', '还是', '这样']
    

    Tf-idf的重要性

    分类机器学习算法进行文章分类中前期数据处理方式

    4.小结

    在这里插入图片描述

    五、决策树算法api

    在这里插入图片描述

    六、案例:泰坦尼克号乘客生存预测

    1.案例背景

    在这里插入图片描述

    2.步骤分析

    在这里插入图片描述

    3.代码实现

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    4.决策树可视化

    保存树的结构到dot文件

    在这里插入图片描述

    export_graphviz(estimator, out_file="./data/tree.dot", feature_names=['age', 'pclass=1st', 'pclass=2nd', 'pclass=3rd', '女性', '男性'])
    

    dot文件当中的内容如下

    digraph Tree {
    node [shape=box] ;
    0 [label="petal length (cm) <= 2.45\nentropy = 1.584\nsamples = 112\nvalue = [39, 37, 36]"] ;
    1 [label="entropy = 0.0\nsamples = 39\nvalue = [39, 0, 0]"] ;
    0 -> 1 [labeldistance=2.5, labelangle=45, headlabel="True"] ;
    2 [label="petal width (cm) <= 1.75\nentropy = 1.0\nsamples = 73\nvalue = [0, 37, 36]"] ;
    0 -> 2 [labeldistance=2.5, labelangle=-45, headlabel="False"] ;
    3 [label="petal length (cm) <= 5.05\nentropy = 0.391\nsamples = 39\nvalue = [0, 36, 3]"] ;
    2 -> 3 ;
    4 [label="sepal length (cm) <= 4.95\nentropy = 0.183\nsamples = 36\nvalue = [0, 35, 1]"] ;
    3 -> 4 ;
    5 [label="petal length (cm) <= 3.9\nentropy = 1.0\nsamples = 2\nvalue = [0, 1, 1]"] ;
    4 -> 5 ;
    6 [label="entropy = 0.0\nsamples = 1\nvalue = [0, 1, 0]"] ;
    5 -> 6 ;
    7 [label="entropy = 0.0\nsamples = 1\nvalue = [0, 0, 1]"] ;
    5 -> 7 ;
    8 [label="entropy = 0.0\nsamples = 34\nvalue = [0, 34, 0]"] ;
    4 -> 8 ;
    9 [label="petal width (cm) <= 1.55\nentropy = 0.918\nsamples = 3\nvalue = [0, 1, 2]"] ;
    3 -> 9 ;
    10 [label="entropy = 0.0\nsamples = 2\nvalue = [0, 0, 2]"] ;
    9 -> 10 ;
    11 [label="entropy = 0.0\nsamples = 1\nvalue = [0, 1, 0]"] ;
    9 -> 11 ;
    12 [label="petal length (cm) <= 4.85\nentropy = 0.191\nsamples = 34\nvalue = [0, 1, 33]"] ;
    2 -> 12 ;
    13 [label="entropy = 0.0\nsamples = 1\nvalue = [0, 1, 0]"] ;
    12 -> 13 ;
    14 [label="entropy = 0.0\nsamples = 33\nvalue = [0, 0, 33]"] ;
    12 -> 14 ;
    }
    

    那么这个结构不能看清结构,所以可以在一个网站上显示

    网站显示结构

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    5.决策树总结

    在这里插入图片描述

    6.小结

    在这里插入图片描述

    七、回归决策树

    在这里插入图片描述

    1.原理概述

    在这里插入图片描述
    在这里插入图片描述

    2.算法描述

    在这里插入图片描述

    3.简单实例

    在这里插入图片描述

    实例计算过程

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    回归决策树和线性回归对比

    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn.tree import DecisionTreeRegressor
    from sklearn import linear_model
    
    # 生成数据
    x = np.array(list(range(1, 11))).reshape(-1, 1)
    y = np.array([5.56, 5.70, 5.91, 6.40, 6.80, 7.05, 8.90, 8.70, 9.00, 9.05])
    
    # 训练模型
    model1 = DecisionTreeRegressor(max_depth=1)
    model2 = DecisionTreeRegressor(max_depth=3)
    model3 = linear_model.LinearRegression()
    model1.fit(x, y)
    model2.fit(x, y)
    model3.fit(x, y)
    
    # 模型预测
    X_test = np.arange(0.0, 10.0, 0.01).reshape(-1, 1)  # 生成1000个数,用于预测模型
    X_test.shape
    y_1 = model1.predict(X_test)
    y_2 = model2.predict(X_test)
    y_3 = model3.predict(X_test)
    
    # 结果可视化
    plt.figure(figsize=(10, 6), dpi=100)
    plt.scatter(x, y, label="data")
    plt.plot(X_test, y_1,label="max_depth=1")
    plt.plot(X_test, y_2, label="max_depth=3")
    plt.plot(X_test, y_3, label='liner regression')
    
    plt.xlabel("data")
    plt.ylabel("target")
    plt.title("Decision Tree Regression")
    plt.legend()
    
    plt.show()
    

    结果展示
    在这里插入图片描述

    4.小结

    在这里插入图片描述

    展开全文
  • 基于决策树算法的心脏病诊断

    千次阅读 2020-04-12 13:24:51
    基于决策树算法的心脏病诊断 前言 提到机器学习常用的算法,决策树必须榜上有名。决策树算法
  • 决策树算法及Python实现

    万次阅读 多人点赞 2018-08-09 16:39:25
    1 什么是决策树 决策树(Decision Tree)是一种基本的分类与回归方法,本文主要讨论分类决策树决策树模型呈树形结构,在分类问题中,表示基于特征对数据进行分类的过程。它可以认为是if-then规则的集合。每个内部...
  • 决策树算法原理以及决策树规则生成方法 决策树是一种可解释性较强的策略分析工具。creditmodel提供了分类回归树和条件推断树两种决策树生成和提取规则的方法。 每一个风险管理人员都应该掌握使用决策树发现规则和对...
  • 决策树算法总结

    千次阅读 2018-09-17 17:46:52
    在学习决策树算法时首先需要知道一些基本概念: 信息  这个是熵和信息增益的基础概念,是对一个抽象事物的命名,无论用不用‘信息’来命名这种抽象事物,或者用其他名称来命名这种抽象事物,这种抽象事物是客观...
  • scikit-learn决策树算法使用

    千次阅读 2019-03-01 17:19:35
    之前对决策树的算法原理做了总结,今天就从实践的角度来介绍决策树算法,主要是讲解使用scikit-learn来跑决策树算法,结果的可视化以及一些参数调参的关键点。 这里直接使用实例进行简单的决策树分类讲解,至于...
  • python实现决策树算法

    千次阅读 2018-09-05 18:37:49
    最近看完了《机器学习实战》和天池直播课堂中的决策树算法,觉得意犹未尽,特别是信息熵部分理解并不透彻,于是又把西瓜书中的决策树看了,略有感悟,希望与大家分享一下,下面我按照自己的理解,尽量用通俗的语言...
  • 决策树算法原理

    千次阅读 2019-03-08 13:26:54
    文章目录决策树介绍决策树的构造过程基于信息论的三种决策树算法ID3算法:基于最大信息增益准则选取特征信息熵与信息增益、最大信息增益准则ID3算法计算实例 决策树介绍 决策树是一种预测模型,他代表的是对象特征...
  • Python机器学习算法之决策树算法

    热门讨论 2021-05-11 19:33:13
    决策树算法1.算法概述2.算法种类3.算法示例4.决策树构建示例5.算法实现步骤6.算法相关概念7.算法实现代码8.算法优缺点9.算法优化 1.算法概述 决策树算法是在已知各种情况发生概率的基础上,通过构成决策树来求取净...
  • 决策树算法的研究

    2019-03-18 15:32:49
    最初的决策树算法是心理学家兼计算机科学家E.B.Hunt 1962年在研究人类的概念学习过程时提出的CLS(Concept Learning System),这个算法确立了决策树“分而治之”的学习策略。罗斯·昆兰在Hunt的指导下于1968年在...
  • 决策树是一种十分常用的分类方法,是一种监督学习。 1、决策树的构造 在构造决策树时,我们需要解决的第一个问题就是,当前数据集上那个特征在划分数据分类时起决定性的作用。为了找到决定性的特征,划分
  • 决策树算法:ID3

    万次阅读 多人点赞 2018-09-01 11:31:18
      目前常用决策树算法有ID3算法、改进的C4.5,C5.0算法和CART算法   ID3算法的核心是在决策树各级节点上选择属性时,用信息增益作为属性的选择标准,使得在每一个非节点进行测试时,能获得关于被测试记录...
  • 手把手教你推导决策树算法

    万次阅读 2020-05-31 17:54:19
    本文为大家介绍了机器学习中常用决策树算法以及相关术语,并基于天气数据集进行决策树算法(ID3、CART算法)实现过程的手动推导。 原文标题:Decision Tree Algorithm With Hands On Example 原文链接:...
  • 机器学习算法(3)之决策树算法

    万次阅读 多人点赞 2018-08-25 20:26:40
    决策树与逻辑回归的分类区别也在于此,逻辑回归是将所有特征变换为概率后,通过大于某一概率阈值的划分为一类,小于某一概率阈值的为另一类;而决策树是对每一个特征做一个划分。另外逻辑回归只能找到线性分割(输入...
  • DecisionTree决策树算法及参数详解+实例+graphviz生成决策树 sklearn随机森林 sklearn集合算法库 sklearn-Bagging自助聚合算法 sklearn-Boosting正向激励算法 sklearn-ExtraTrees算法
  • 决策树算法---java

    千次阅读 2015-07-21 14:13:40
    概念:决策树算法是一种逼近离散函数值的方法。它是一种典型的分类方法,首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析。本质上决策树是通过一系列规则对数据进行分类的...
  • 决策树算法及python实现

    万次阅读 多人点赞 2017-06-13 11:48:21
    1 什么是决策树 决策树(Decision Tree)是一种基本的分类与回归方法,本文主要讨论分类决策树决策树模型呈树形结构,在分类问题中,表示基于特征对数据进行分类的过程。它可以认为是if-then规则的集合。每个内部...
  • 使用决策树算法预测森林植被

    千次阅读 2017-07-14 22:28:56
    Spark MLlib 机器学习—决策树算法用于预测森林植被 一、实验介绍 1.1 内容介绍 决策树算法就是通过对已有明确结果的历史数据进行分析,寻找数据中的特征,并以此为依据对新产生的数据结果进行预测。决策树主要由...
  • 决策树是一个非常常见并且优秀的机器学习算法,它易于理解、可解释性强,其可作为分类算法,也可用于回归模型。本文将分三篇介绍决策树,第一篇介绍基本树(包括 ID3、C4.5、CART),第二...
  • 决策树算法与剪枝处理

    千次阅读 2017-09-03 22:21:25
    一、决策树算法  决策树算法是一种逼近离散函数值的方法。它是一种典型的分类方法,首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析。  决策树算法的核心思想就是通过...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 38,435
精华内容 15,374
关键字:

常用的决策树算法