Skip to content

Instantly share code, notes, and snippets.

@agarman
Created March 10, 2017 16:29
Show Gist options
  • Save agarman/dbb3a6649497c2eaa0353ada9f6639ae to your computer and use it in GitHub Desktop.
Save agarman/dbb3a6649497c2eaa0353ada9f6639ae to your computer and use it in GitHub Desktop.
(defn log2 [n] (/ (Math/log n) (Math/log 2)))
(defn entropy
"Calculate Shannon entropy for xs. Higher value is greater entropy.
Values returned between 0.0 & 8.0"
[xs]
(let [freqs (vals (frequencies xs))
cnt (reduce + freqs)
calc #(let [p (double (/ % cnt))]
(* p (log2 p)))]
(reduce - 0 (map calc freqs))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment