小标
2018-10-22
来源 :
阅读 2249
评论 0
摘要:本文主要向大家介绍了机器学习入门之《机器学习实战》菜鸟学习笔记(三)决策树,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助。
本文主要向大家介绍了机器学习入门之《机器学习实战》菜鸟学习笔记(三)决策树,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助。
老规矩,Talk is cheap, show me your code.
#-*-coding:utf-8-*-
from math import log
def calcShannonEnt(datsSet):
#长度
numEntries = len(dataSet)
#字典统计
labelCounts = {}
#遍历特征
for featVec in dataSet:
#最后一维特征(分类)
currentLabel = featVec[-1]
#如果不在字典中,则添加进字典
#可以写成labelCounts[labelCount] = labelCounts.get(currentLabel,0) + 1
if currentLabel not in labelCounts.key():
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
这段代码很简单,可能对于最后几句话理解起来有些困难。那我们一起来分析一下。
什么是信息增益和熵呢?学过信息论的同学肯定知道,那么对于没有学过的同学呢?不要着急,我们一起来看看。
首先 信息增益和熵是一回事,就是一个事情两个名字而已。那么什么是熵呢?
熵就是信息的期望值,在信息世界,熵越高,则能传输越多的信息,熵越低,则意味着传输的信息越少。ok,那么什么是信息呢?是如何用数学语言描述呢?信息的定义就是:
-ln(p)
很简单是不,那么我们应该怎么理解呢?首先p代表某个分类出现的概率。比如,均匀色子出现6的概率为1/6,硬币正面朝上的概率为1/2。那么又为什么取对数呢?
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标人工智能机器学习频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号