当前位置:   article > 正文

【机器学习系列】之ID3、C4.5、CART决策树构建代码_c4.5二分类决策树代码

c4.5二分类决策树代码

作者:張張張張
github地址:https://github.com/zhanghekai
【转载请注明出处,谢谢!】

【机器学习系列】之“西瓜数据集”决策树构建数学公式计算过程
【机器学习系列】之决策树剪枝和连续值、缺失值处理数学公式计算
【机器学习系列】之ID3、C4.5、CART决策树构建代码

ID3决策树 西瓜数据集2.0案例

项目概述:
\quad 根据以下6个特征,将西瓜分成两类:好瓜和坏瓜
特征:
\quad 1.西瓜的颜色
\quad 2.西瓜的根卷曲程度
\quad 3.敲打西瓜发出的声音
\quad 4.西瓜表面的纹理
\quad 5.西瓜脐部凹陷情况
\quad 6.抚摸西瓜时的触感
开发流程:
\quad 收集数据集:可以使用任何方法.
\quad 准备数据:树构造算法(这里使用ID3算法,因此数值型数据必须离散化。)
\quad 分析数据:可以使用任何方法,构造书完成之后,我们可以将树画出来。
\quad 训练算法:构造树结构。
\quad 测试算法:使用习得的决策树执行分类。
\quad 使用算法:此步骤可以适用于任何监督学习任务,而使用决策树可以更好地理解数据的内在含义。

import math
import operator
import numpy as np
  • 1
  • 2
  • 3

一、收集数据:利用createDataSet()函数输入数据

def createDataSet():
    # dataSet中最后一列记录的是类别,其余列记录的是特征值
    dataSet = [
        ['青绿','蜷缩','浊响','清晰','凹陷','硬滑','是'],
        ['乌黑','蜷缩','沉闷','清晰','凹陷','硬滑','是'],
        ['乌黑','蜷缩','浊响','清晰','凹陷','硬滑','是'],
        ['青绿','蜷缩','沉闷','清晰','凹陷','硬滑','是'],
        ['浅白','蜷缩','浊响','清晰','凹陷','硬滑','是'],
        ['青绿','稍蜷','浊响','清晰','稍凹','软粘','是'],
        ['乌黑','稍蜷','浊响','稍糊','稍凹','软粘','是'],
        ['乌黑','稍蜷','浊响','清晰','稍凹','硬滑','是'],
        ['乌黑','稍蜷','沉闷','稍糊','稍凹','硬滑','否'],
        ['青绿','硬挺','清脆','清晰','平坦','软粘','否'],
        ['浅白','硬挺','清脆','模糊','平坦','硬滑','否'],
        ['浅白','蜷缩','浊响','模糊','平坦','软粘','否'],
        ['青绿','稍蜷','浊响','稍糊','凹陷','硬滑','否'],
        ['浅白','稍蜷','沉闷','稍糊','凹陷','硬滑','否'],
        ['乌黑','稍蜷','浊响','清晰','稍凹','软粘','否'],
        ['浅白','蜷缩','浊响','模糊','平坦','硬滑','否'],
        ['青绿','蜷缩','沉闷','稍糊','稍凹','硬滑','否']
    ]
    
    # label中记录的是特征的名称
    labels = ['色泽','根蒂','敲声','纹理','脐部','触感']
    
    return dataSet, labels
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

二、准备数据

\quad 由于我们输入的数据本身就是离散化数据,所以这一步就省略了。

三、分析数据

使用信息增益的方法:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/398797
推荐阅读
相关标签
  

闽ICP备14008679号