Generieren Sie mit Jupyter eine Kerneldichtefunktion und visualisieren Sie diese. Klicken Sie hier, um eine Beschreibung der Kerneldichtefunktion zu erhalten [https://www.ie-kau.net/entry/kernel_density_est].
Die Form der Kerneldichtefunktion scheint sich zwischen der Verwendung der Funktion gaussian_kde und der Verwendung der Funktion seabon kdeplot geringfügig zu unterscheiden.
/home/sampletest/sample.py
from numpy.random import randn
import seaborn as sns
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
from scipy.stats import gaussian_kde
sns.set_style("whitegrid")
from scipy.integrate import cumtrapz #Bibliothek zur Integration von PDF in alle Abschnitte
#Geben Sie einen Datensatz an und generieren Sie eine Kerneldichtefunktion. Es berechnet auch die kumulative Häufigkeit der Kerneldichtefunktion und
#Kumulativer Wert gesunken,Gibt den X-Wert zurück, der aktiv ist.
def pdf_kernel(dataset,down,up):
d_max=np.max(dataset)+0.2
d_min=np.min(dataset)-0.2
d_kernel = gaussian_kde(dataset) #Generieren Sie eine Kernel-Dichteschätzungsfunktion. Die Bandbreite wird automatisch berechnet.
#Geben Sie den zu integrierenden Bereich an: d_min bis d_Integrieren Sie in den Bereich von max.
d_xs = np.linspace(d_min, d_max, num=1000)
#Eingabe der Kerneldichtefunktion(d_xs)Und Ausgabe(d_ys)Ist definiert.
d_ys = d_kernel(d_xs)
#Kumulative Verteilungsfunktion d_Integrieren Sie in den Bereich von xs.
d_integral = cumtrapz(d_ys, d_xs)
#cdf(x) = 0.Finde x das ist 03. d_0 im integralen Array.Die Zahl, die 03 am nächsten kommt, wird im Array berechnet.
idx_d= np.searchsorted(d_integral, down)
#cdf(x) = 0.Finden Sie x, das 9 ist. d_0 im integralen Array.Die Zahl, die 9 am nächsten kommt, wird als Zahl im Array berechnet.
idx_u = np.searchsorted(d_integral, up)
#Das Diagramm wird angezeigt.
ax=plt.plot(d_xs, d_ys, label="KDE")
plt.xlim(d_min-1, d_max+1)
#Kumulativer Wert 5%Bereich anzeigen von
plt.fill_between(d_xs[:idx_d], 0, d_ys[:idx_d], facecolor="r", alpha=0.5)
#Kumulativer Wert 90%Bereich anzeigen von
plt.fill_between(d_xs[idx_u:], 0, d_ys[idx_u:], facecolor="r", alpha=0.5)
#Die Legende wird oben rechts angezeigt
plt.legend(loc="upper right")
pdf_val={"down":d_xs[idx_d],"up":d_xs[idx_u]}
return pdf_val
#Das Hauptprogramm startet von folgendem
dataset = randn(50) #Generieren Sie 50 Zufallszahlen, die einer gleichmäßigen Verteilung folgen
down=0.05
up=0.9
#Geben Sie einen Datensatz an und generieren Sie eine Kerneldichtefunktion. Es berechnet auch die kumulative Häufigkeit der Kerneldichtefunktion und
#Kumulativer Wert gesunken,Gibt den X-Wert zurück, der aktiv ist.
val=pdf_kernel(dataset,down,up)
#Schreiben Sie eine Kerneldichtefunktion mit seaborn.
sns.kdeplot(dataset,label="from seaborn")
Ausführungsergebnis </ b> #Der Bereich des kumulativen Werts 0 bis unten (5% im abgebildeten Beispiel) und der Bereich des kumulativen Werts oben (90% im dargestellten Beispiel) bis 100% werden angezeigt.
Recommended Posts