首先信息熵和信息增益的通俗理解这里不多解释,想了解的看这里:
信息增益通俗理解](https://blog.csdn.net/It_BeeCoder/article/details/79554388)
设置了两个数组:
a = np.array([1,2,3,4,5,6,7,8,9])
b = np.array([1,2,3,1,3,1,3,3,2])
a是全体样本在某一特征下的取值,
b是对应的分类结果,有三类
则计算a对b的信息增益:
首先计算b的信息熵:
ent_b = sum((-1) * np.log2(pd.value_counts(b) / len(b)) * pd.value_counts(b) / len(b))
再计算a在b条件下的熵:
这是计算b的类别数
num_label = np.unique(b, return_counts= True)
创造一个列表ent_v1记录每个类别对应的信息熵
ent_v1 = []
分别计算a在b不同类别下的熵:
for i in range(len(num_label[0])):
#创建一个空的列表,记录每次循环类别对应的样本
m = []
for j in range(b.shape[0]):
if b[j] == i:
m.append(a[j])
#计算列表m的信息熵
ent_v1.append(sum((-1) * np.log2(pd.value_counts(m) / len