0415学习笔记:3决策树

1.决策树--》处理分类问题。最常使用的数据挖掘算法。专家系统中经常使用

2.优势:数据形式容易理解,计算复杂度不高,对中间值缺失不敏感,可处理不相关特征数据。

缺:可能过度匹配

3.信息增益:

    划分数据集:无序数据变得有序--》》使用信息论度量信息

如何计算信息增益?(集合信息的度量方式称为熵--信息的期望值)

3-1计算给定数据的熵

#coding:utf-8
from math import log

def calcShannonEnt(dataSet):
    numEntries = len(dataSet) #数据集的总数
    labelCounts = {} #建立数据字典
    for featVec in dataSet:
        currentLabel = featVec[-1] #键:最后一列的数值
        if currentLabel not in labelCounts.keys():
            labelCounts[currentLabel] = 0
        labelCounts[currentLabel] += 1 #每个键都记录当前类别出现的字数
    shannonEnt = 0.0
    for key in labelCounts: #计算熵
        prob = float(labelCounts[key])/numEntries #类别出现的概率
        shannonEnt -= prob * log(prob,2)
    return shannonEnt #返回熵

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

测试:

import sys
sys.path.append('/home/yang/Software/pycharm-community-2017.3.4/bin/桌面/PycharmProjects/untitled/k18')
import trees
reload(trees)
myDat,labels = trees.createDataSet() 
myDat
trees.calcShannonEnt(myDat)

Out[36]: 0.9709505944546686
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值