机器学习决策树算法中特征选项的算法实现——信息熵


机器学习决策树算法中特征选项的算法实现——信息熵


首先我们将信息熵的定义进行阐述:
在这里插入图片描述经验熵
在这里插入图片描述
在这里插入图片描述
我们这里以网上数据贷款申请为例:数据来自(https://blog.csdn.net/c406495762/article/details/75663451)
在这里插入图片描述
在这里我们利用ID3算法分别计算年龄这个属性里的三个分支青年H(D1)、H(D2)、H(D3)的信息熵。
问题理解很简单,公式也很简单,其代码如下:

"""
	年龄:0代表青年,1代表中年,2代表老年
	类别(是否给贷款):no代表否,yes代表是。
"""
from math import log
def funbasic(databases):
	numlable_0 = 0
	numlable_1 = 0
	numlable_2 = 0
	lable_0_yes = 0
	lable_0_no = 0
	lable_1_yes = 0
	lable_1_no = 0
	lable_2_yes = 0
	lable_2_no = 0
	sevlable_0_yes = 0.0
	sevlable_0_no = 0.0
	sevlable_1_yes = 0.0
	sevlable_1_no = 0.0
	sevlable_2_yes = 0.0
	sevlable_2_no = 0.0
	for lable in databases:           #分别对青年、中年、老年中是否贷款的概率进行计算
		if lable[0] == 0:
			numlable_0 += 1
			if lable[1] == 'yes':
				lable_0_yes += 1
			else:
				lable_0_no += 1
		elif lable[0] == 1:
			numlable_1 += 1
			if lable[1] == 'yes':
				lable_1_yes += 1
			else:
				lable_1_no += 1
		else:
			numlable_2 += 1
			if lable[1] == 'yes':
				lable_2_yes += 1
			else:
				lable_2_no += 1
	sevlable_0_yes = lable_0_yes/numlable_0
	sevlable_0_no = lable_0_no/numlable_0
	sevlable_1_yes = lable_1_yes/numlable_1
	sevlable_1_no = lable_1_no/numlable_1
	sevlable_2_yes = lable_2_yes/numlable_2
	sevlable_2_no = lable_2_no/numlable_2
	database1 = [[sevlable_0_yes,sevlable_0_no],[sevlable_1_yes,sevlable_1_no],[sevlable_2_yes,sevlable_2_no]]
	return database1
def fun(database):      #信息熵的计算
	i = 0
	for sevlable in database:
		information = 0.0
		for sve in sevlable:
			information -= sve * log(sve,2)
		print (i,':',information)
		i += 1
if __name__ == '__main__':
	databases = [[0,'no'],
	[0,'no'],
	[0,'yes'],
	[0,'yes'],
	[0,'no'],
	[1,'no'],
	[1,'no'],
	[1,'yes'],
	[1,'yes'],
	[1,'yes'],
	[2,'yes'],
	[2,'yes'],
	[2,'yes'],
	[2,'yes'],
	[2,'no']]
	database = funbasic(databases)
	print(database)
	fun(database)

运行结果
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值