Coverage for lasso/math/stochastic.py: 100%

9 statements  

« prev     ^ index     » next       coverage.py v7.2.4, created at 2023-04-28 18:42 +0100

1import numpy as np 

2from scipy import stats 

3 

4 

5def jensen_shannon_entropy(p: np.ndarray, q: np.ndarray) -> float: 

6 """Jensen Shannon Entropy 

7 

8 Parameters 

9 ---------- 

10 p: np.ndarray 

11 first probability distribution 

12 q: np.ndarray 

13 second probability distribution 

14 

15 Returns 

16 ------- 

17 js_divergence: float 

18 Jensen-Shannon divergence 

19 """ 

20 p = np.asarray(p) 

21 q = np.asarray(q) 

22 # normalize 

23 p = p / p.sum() 

24 q = q / q.sum() 

25 m = (p + q) / 2 

26 return (stats.entropy(p, m) + stats.entropy(q, m)) / 2