机器学习之经典算法(十四) ID3算法

本文介绍了ID3决策树算法的基本思想和构建过程,包括信息熵、信息增益等概念,并提供了Python代码示例。ID3算法适用于离散属性的数据集,通过递归构建决策树来实现分类。此外,还提及了算法对数据的要求和Scikit-Learn库中的决策树应用。
摘要由CSDN通过智能技术生成

  1. ID3算法简介:

构造ID3决策树的基本算法是贪心算法,它以自顶向下递归的各个击破方式构造决策树。一种著名的决策树算法是ID3,算法的基本策略如下:

①创建一个节点。如果样本都在同一类,则算法停止,把该节点改成树叶节点,并用该类标记。

②否则,选择一个能够最好的将训练集分类的属性,该属性作为该节点的测试属性。计算最优特征子函数:不同标准导致不同类型的决策树,如ID3的最优特征选择标准是信息增益,C4.5是信息增益率,CART是节点方差的大小等等。算法逻辑上,一般选择最优特征需要遍历整个数据集,评估每个特征,找到最优的那个返回。

③对测试属性中的每一个值,创建相应的一个分支,并据此划分样本。划分数据集子函数:分隔数据集。

④使用同样的过程,自顶向下的递归,直到满足下面的三个条件中的一个时就停止递归。

A. 给定节点的所有样本都属于同一类。

B. 没有剩余的属性可以用来划分。

C. 分支没有样本。

为了存储树的关系,利用根表示:学习的事例集枝表示: 分类的判定条件。叶表示:分好的各个类

ID3算法对数据的要求:

1. 所有属性必须为离散量,且离散值分散越广,对树的影响较大。

2. 所有的训练例的所有属性必须有一个明确的值.

3. 相同的因素必须得到相同的结论且训练例必须唯一

  (二)ID3构造过程(列出python代码供大家学习研究):

from math import log

from imp import reload

import matplotlib.pyplot as plt

import operator

import pickle

def createdataSet():#建立训练数据和测试数据

   dataSet=[[1,1,'yes'],

            [1,1,'yes'],

            [1,0,'no'],

            [0,1,'no'],

            [0,1,'no']]

   labels=['no surfacing','flippers']#

   #labels表示的类标签:(相当于标题行):

    #上面的数据集,第一列表示是nosurfacing对应的信息;第二列对应的是flippers表示信息。

   return dataSet,labels           

#----------------------计算信息熵------------------#

def calcShanonEnt(dataSet):

   numEntries=len(dataSet)  #数据样本数

   labelCounts={}    #类别字典

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值