输入 X:一个 numpy 数组,其大小给出了实例的数量。X 包含每个实例的属性值。Y:一个 numpy 数组,其中包含每个实例对应的目标标签。
输出:条件熵
你能帮我动态编码条件熵计算吗,这将进一步从给定总体的总熵中减去,以找到信息增益。
我尝试了类似下面的代码示例。但我唯一的输入数据是两个 numpy 数组。你能帮我纠正一下吗?[代码]
def gain(data, attr, target_attr):
val_freq = {}
subset_entropy = 0.0
for record in data:
if (val_freq.has_key(record[attr])):
val_freq[record[attr]] += 1.0
else:
val_freq[record[attr]] = 1.0
for val in val_freq.keys():
val_prob = val_freq[val] / sum(val_freq.values())
data_subset = [record for record in data if record[attr] == val]
conditional_entropy += val_prob * entropy(data_subset, target_attr)