Advertisement
Guest User

Untitled

a guest
Jun 27th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.66 KB | None | 0 0
  1. import math
  2. from collections import Counter
  3. base = {
  4. 'shannon' : 2.,
  5. 'natural' : math.exp(1),
  6. 'hartley' : 10.,
  7. 'somerandbase' : 256.
  8. }
  9. def eta(data, unit):
  10. if len(data) <= 1:
  11. return 0
  12. counts = Counter()
  13. for d in data:
  14. counts[d] += 1
  15. ent = 0
  16. probs = [float(c) / len(data) for c in counts.values()]
  17. for p in probs:
  18. if p > 0.:
  19. ent -= p * math.log(p, base[unit])
  20. return ent
  21. for i in base:
  22. print ( eta("abcde",i))
  23. print ( eta("lllll",i))
  24.  
  25. python foo.py
  26. 2.321928094887362
  27. 0.0
  28. 1.6094379124341005
  29. 0.0
  30. 0.6989700043360187
  31. 0.0
  32. 0.2902410118609203
  33. 0.0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement