Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- from collections import Counter
- base = {
- 'shannon' : 2.,
- 'natural' : math.exp(1),
- 'hartley' : 10.,
- 'somerandbase' : 256.
- }
- def eta(data, unit):
- if len(data) <= 1:
- return 0
- counts = Counter()
- for d in data:
- counts[d] += 1
- ent = 0
- probs = [float(c) / len(data) for c in counts.values()]
- for p in probs:
- if p > 0.:
- ent -= p * math.log(p, base[unit])
- return ent
- for i in base:
- print ( eta("abcde",i))
- print ( eta("lllll",i))
- python foo.py
- 2.321928094887362
- 0.0
- 1.6094379124341005
- 0.0
- 0.6989700043360187
- 0.0
- 0.2902410118609203
- 0.0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement