jensenshannon#
- scipy.spatial.distance.jensenshannon(p, q, base=None, *, axis=0, keepdims=False)[Quelle]#
Berechnet den Jensen-Shannon-Abstand (Metrik) zwischen zwei Wahrscheinlichkeitsarrays. Dies ist die Quadratwurzel der Jensen-Shannon-Divergenz.
Der Jensen-Shannon-Abstand zwischen zwei Wahrscheinlichkeitsvektoren p und q ist definiert als,
\[\sqrt{\frac{D(p \parallel m) + D(q \parallel m)}{2}}\]wobei \(m\) der punktweise Mittelwert von \(p\) und \(q\) ist und \(D\) die Kullback-Leibler-Divergenz ist.
Diese Routine normalisiert p und q, wenn sie nicht zur Summe 1,0 ergeben.
- Parameter:
- p(N,) array_like
linker Wahrscheinlichkeitsvektor
- q(N,) array_like
rechter Wahrscheinlichkeitsvektor
- basedouble, optional
die Basis des Logarithmus, der zur Berechnung der Ausgabe verwendet wird. Wenn nicht angegeben, verwendet die Routine die Standardbasis von scipy.stats.entropy.
- axisint, optional
Achse, entlang derer die Jensen-Shannon-Abstände berechnet werden. Standard ist 0.
Hinzugefügt in Version 1.7.0.
- keepdimsbool, optional
Wenn dies auf True gesetzt ist, bleiben die reduzierten Achsen im Ergebnis als Dimensionen mit Größe eins erhalten. Mit dieser Option wird das Ergebnis korrekt gegen das Eingabearray gebroadcastet. Standard ist False.
Hinzugefügt in Version 1.7.0.
- Rückgabe:
- jsdouble or ndarray
Die Jensen-Shannon-Abstände zwischen p und q entlang der axis.
Hinweise
Hinzugefügt in Version 1.2.0.
Beispiele
>>> from scipy.spatial import distance >>> import numpy as np >>> distance.jensenshannon([1.0, 0.0, 0.0], [0.0, 1.0, 0.0], 2.0) 1.0 >>> distance.jensenshannon([1.0, 0.0], [0.5, 0.5]) 0.46450140402245893 >>> distance.jensenshannon([1.0, 0.0, 0.0], [1.0, 0.0, 0.0]) 0.0 >>> a = np.array([[1, 2, 3, 4], ... [5, 6, 7, 8], ... [9, 10, 11, 12]]) >>> b = np.array([[13, 14, 15, 16], ... [17, 18, 19, 20], ... [21, 22, 23, 24]]) >>> distance.jensenshannon(a, b, axis=0) array([0.1954288, 0.1447697, 0.1138377, 0.0927636]) >>> distance.jensenshannon(a, b, axis=1) array([0.1402339, 0.0399106, 0.0201815])