机器学习实战(三、决策树:计算熵值、划分数据集、获得熵值最小的特征值)

K - 近邻算法可以完成很多分类任务

但是它最大的缺点就是无法给出数据的内在含义

决策树的主要优势就在于数据形式非常容易理解 

 

 

 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

 测试以下:

# coding=utf-8
import ML_Tree_xn_shang as xn

#创建数据集
def createDataSet():
    dataSet = [
        [1,1,'yes'],
        [1,1,'yes'],
        [1,0,'no'],
        [0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值