add subset algorithm
This commit is contained in:
@@ -2,9 +2,14 @@ package mathx
|
||||
|
||||
import "math"
|
||||
|
||||
func CalcEntropy(m map[interface{}]int, total int) float64 {
|
||||
func CalcEntropy(m map[interface{}]int) float64 {
|
||||
var entropy float64
|
||||
|
||||
var total int
|
||||
for _, v := range m {
|
||||
total += v
|
||||
}
|
||||
|
||||
for _, v := range m {
|
||||
proba := float64(v) / float64(total)
|
||||
entropy -= proba * math.Log2(proba)
|
||||
|
||||
@@ -13,5 +13,5 @@ func TestCalcEntropy(t *testing.T) {
|
||||
for i := 0; i < total; i++ {
|
||||
m[i] = count
|
||||
}
|
||||
assert.True(t, CalcEntropy(m, total*count) > .99)
|
||||
assert.True(t, CalcEntropy(m) > .99)
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ func TestUnstable_Distribution(t *testing.T) {
|
||||
for k, v := range m {
|
||||
mi[k] = v
|
||||
}
|
||||
entropy := CalcEntropy(mi, total)
|
||||
entropy := CalcEntropy(mi)
|
||||
assert.True(t, len(m) > 1)
|
||||
assert.True(t, entropy > 0.95)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user