决策树算法初探

看了些决策树算法的blog,粗略了解了决策树算法是个怎么一回事:决策树的核心点在于找到分裂的属性点,按照熵增益(ID3)最大,或者熵增益率(C4.5)最大来选分裂的属性点。后续包括一些剪枝等等小操作。

里面最基本的是要计算熵,那么就写一个计算熵值得脚本吧。
直接上代码:

#-*- coding:utf-8 -*-
import numpy as np
# Python 实现熵的计算
def calcShannonEnt(dataSet):
    # 数据的个数
    numEntries=len(dataSet)
    print 'numEntries is %s'%str(numEntries)
    #用来去统计每种属性结果的次数
    labelCounts={}
    for featVec in dataSet:
        # 应为想要预测的属性值在list的最后一位,所以用-1去获取属性值得结果
        currentLabel=featVec[-1]
        print currentLabel
        #dic里没有就把它初始化
        if currentLabel not in labelCounts.keys():
            labelCounts[currentLabel]=0
        #计数加一
        labelCounts[currentLabel]+=1
    print labelCounts
    #初始化熵值为0
    shannonEnt=0.0
    for key in labelCounts:
        # 计算每个属性值的概率
        prob=float(labelCounts[key])/numEntries
        #根据熵计算公式求得信息的熵
        shannonEnt-=prob*np.log2(prob)
    return shannonEnt
#我们把所想要预测的属性值放在数据的最后
dataSet=np.array([[1,2],[3,2],[5,6]])

print calcShannonEnt(dataSet)


下面是输出结果,很简单的一个程序,就是记数算概率而已。很好很基础。

C:\Python27\python.exe D:/pycharmscript/test2.py
numEntries is 3
2
2
6
{2: 2, 6: 1}
0.918295834054

 

转载于:https://www.cnblogs.com/AlwaysT-Mac/p/6646030.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值