import numpy as np
def calcInfoGain(feature, label, index):
#*********** Begin ***********#
def total_cal(label):
label_set = set(label)
result = 0
for i in label_set:
p=list(label).count(i)/len(label)
result-=p * np.log2(p)
return result
aba=[]
length=[]
for value in set(feature[:,index]):
# num=feature[:,index].count(value)
sub_label = []
for i in range(len(feature)):
if feature[i][index] == value:
sub_label.append(label[i])
aba.append(total_cal(sub_label))
length.append(len(sub_label)/len(label))
res=total_cal(label)-length[0]*aba[0]-length[1]*aba[1]
return res