add tests

This commit is contained in:
kevin
2020-08-07 15:28:40 +08:00
parent 69ea425000
commit bca56ef8c3
3 changed files with 96 additions and 4 deletions

View File

@@ -2,9 +2,14 @@ package mathx
import "math"
func CalcEntropy(m map[interface{}]int) float64 {
var entropy float64
const epsilon = 1e-6
func CalcEntropy(m map[interface{}]int) float64 {
if len(m) == 0 || len(m) == 1 {
return 1
}
var entropy float64
var total int
for _, v := range m {
total += v
@@ -12,6 +17,9 @@ func CalcEntropy(m map[interface{}]int) float64 {
for _, v := range m {
proba := float64(v) / float64(total)
if proba < epsilon {
proba = epsilon
}
entropy -= proba * math.Log2(proba)
}