拜读您的代码,感谢万分。我在研读这篇论文并对比你的代码后,发现有一处计算与论文中不一致,
在你的代码最后要选取能够使得互信息增量最大化的特征时,论文中是按照选取计算后“值最大的”特征,而你的算法中按照你的思路是对计算结果添加了负号,所以是选取计算后“值最小”的特征。
149行:evaluate_list = [ent_f_with_l_and_l_list[i] - ent_f_with_l_list[i] for i in range(self.train_data.shape[1])]
# 计算新添加特征与原有标签间的信息熵大小
176行:f_evaluate_list = [evaluate_list[i] - ent_f_with_f_and_l_list[i] for i in range(self.train_data.shape[1])]
可以理解为:
f_evaluate_list = [ent_f_with_l_and_l_list - ent_f_with_l_lis t - ent_f_with_f_and_l_list]
而文章中是图片所示
所以我认为你在算法第176行应该使用 “+” 号。
也有可能是我理解不深刻产生误解,作者您怎么认为?