《机器学习实战》第三章学习笔记(决策树)

一、决策树模型

1.1 定义

分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型:内部结点和叶结点。内部结点表示一种特征或属性,叶结点表示一个类。

下图是一个决策树模型,圆和方框分别表示内部结点和叶结点。

1.2 决策树学习

二、特征选择

特征选择在于选取对训练数据具有分类能力的特征,这样可以提高决策树学习的效率。通常特征选择的准则是信息增益或信息增益比。

2.1  熵的定义

2.2 条件熵

2.3 信息增益

信息增益(information gain)表示得知特征X的信息而使得类Y的信息的不确定性减少的程度。


2.4 信息增益比

信息增益值的大小是相对于训练数据集而言的,在分类问题中,训练数据集的经验熵大的时候,信息增益值就会偏大,反之,信息增益值会偏小。也就是说,以信息增益为划分训练数据集的特征,存在偏向于选择取值较多的特征的问题。而信息增益比则能解决这一问题。

三、ID3算法(Interative Dichotomiser 3,迭代二叉树3代)

3.1 代码实现
# -*- coding: utf-8 -*-
"""
Created on Fri Apr 13 18:50:19 2018
file name:tree.py
@author: lizihua
"""
from math import log
import operator

#输入一个数据集
def createDataSet():
    dataSet = [[1,1,'yes'],[1,1,'yes'],[1,0,'no'],[0,1,'no'],[0,1,'no']]
    labels =['no surfacing','flippers']
    return dataSet, labels

#计算给定数据集的熵
def calEntropy(dataSet):
    numentries = len(dataSet)
    labelCounts = {}
    #用字典记录给定数据集中各个类出现的次数
    for featVec in dataSet:
        currentLabel = featVec[-1]
        if currentLabel not in labelCounts.keys():
            labelCounts[currentLabel] = 0
        labelCounts[currentLabel] += 1
    #计算熵entropy
    entropy = 0.0
    for key in labelCounts:
        #选择该类的概率
        prob = float(labelCounts[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值