Source code for skgstat.util.shannon
import numpy as np
[docs]
def shannon_entropy(x, bins):
"""Shannon Entropy
Calculates the Shannon Entropy, which is the most basic
metric in information theory. It can be used to calculate
the information content of discrete distributions.
This can be used to estimate the intrinsic uncertainty of
a sample,independent of the value range or variance, which
makes it more comparable.
Parameters
----------
x : numpy.ndarray
flat 1D array of the observations
bins : list, int
upper edges of the bins used to calculate the histogram
of x.
Returns
-------
h : float
Shannon Entropy of x, given bins.
"""
# histogram
c, _ = np.histogram(x, bins=bins)
# empirical probabilities
p = c / np.sum(c) + 1e-15
# map information function and return product
return - np.fromiter(map(np.log2, p), dtype=float).dot(p)