在python调试中,使用print打印出中间结果容易发现问题。由于python3中的map需要list转换后才能print出具体的内容。但是list转换后,后面再用到map类型的地方会出现错误。所以可以考虑使用deepcopy函数进行map变量的备份,对备份进行print(list())显示。
具体使用方法如下:
# 计算特征集中每个特征的信息增益
l = map(lambda x: [x, self.caculateGain(dataset=dataset, feature=x)], features)
# 把l复制一份给ll,转成list进行print显示;否则后面再次使用l的地方会出现错误。
import copy
ll = copy.deepcopy(l)
print(list(ll))
# 选取信息增益最大的特征
feature, gain = max(l, key=lambda x: x[1])