我正在浏览一些实现决策树学习器的代码。这是代码:
def calculate_entropy(self, tags):
tags_counter = Counter()
if len(tags) > 0:
for tag in tags:
tags_counter[tag] += 1
classes_probs = [float(tags_counter[tag]) / len(tags) for tag in tags_counter]
entropy = 0
for prob in classes_probs:
if prob == 0:
return 0
entropy -= prob * math.log(prob, 2)
return entropy
else:
return 0
我的问题是:
(1)警告是因为classes_probs
可能在那时未定义。如果tags
为空,则第一个循环不会执行。您可以通过在第一个循环之前指定一个空列表来“修复”此问题。
(2)这被称为list comprehension
。使用该搜索术语并根据您喜欢的写作水平和示例查找教程。