def __estimate_entropy__(self):
counts = self.feature_vector_counts #Counter(self.timeline_feature_vectors)
#print counts
#N = float(sum(counts.values()))
N = float(len(self.timeline) + 1)
max_H = np.log(float(len(list(filter(lambda x: x, counts)))))
if np.equal(max_H, 0.0):
return 0.0
entropy = 0.0
for key in counts.keys():
if counts[key] > 0:
key_probability = counts[key] / N
entropy += -(key_probability * np.log(key_probability))
entropy /= max_H
#print u'N={0}, |counts|={3}, max_H={1}, entropy={2}, counter={4}'.format(N, max_H, entropy, len(counts), counts)
return entropy
评论列表
文章目录