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
« prev ^ index » next coverage.py v7.2.4, created at 2023-04-28 18:42 +0100
1import numpy as np
2from scipy import stats
5def jensen_shannon_entropy(p: np.ndarray, q: np.ndarray) -> float:
6 """Jensen Shannon Entropy
8 Parameters
9 ----------
10 p: np.ndarray
11 first probability distribution
12 q: np.ndarray
13 second probability distribution
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