Générez une fonction de densité du noyau avec Jupyter et visualisez-la. Cliquez ici pour une description de la fonction de densité du noyau [https://www.ie-kau.net/entry/kernel_density_est)
La forme de la fonction de densité du noyau semble être légèrement différente entre l'utilisation de la fonction gaussian_kde et l'utilisation de la fonction seabon kdeplot.
/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 #Bibliothèque pour intégrer le pdf dans toutes les sections
#Donnez un jeu de données et générez une fonction de densité du noyau. Il calcule également la fréquence cumulée de la fonction de densité du noyau et
#Valeur cumulée en baisse,Renvoie la valeur X en hausse.
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) #Génère une fonction d'estimation de la densité du noyau. La bande passante est calculée automatiquement.
#Spécifiez la plage à intégrer: d_min à j_Intégrez dans la plage de max.
d_xs = np.linspace(d_min, d_max, num=1000)
#Entrée de la fonction de densité du noyau(d_xs)Et sortie(d_ys)Est défini.
d_ys = d_kernel(d_xs)
#Fonction de distribution cumulative d_Intégrez dans la gamme de xs.
d_integral = cumtrapz(d_ys, d_xs)
#cdf(x) = 0.Trouvez x qui est 03. ré_0 dans le tableau intégral.Le nombre le plus proche de 03 est calculé dans le tableau.
idx_d= np.searchsorted(d_integral, down)
#cdf(x) = 0.Trouvez x qui vaut 9. ré_0 dans le tableau intégral.Le nombre le plus proche de 9 est calculé comme le nombre dans le tableau.
idx_u = np.searchsorted(d_integral, up)
#Le graphique s'affiche.
ax=plt.plot(d_xs, d_ys, label="KDE")
plt.xlim(d_min-1, d_max+1)
#Valeur cumulée 5%Afficher la gamme de
plt.fill_between(d_xs[:idx_d], 0, d_ys[:idx_d], facecolor="r", alpha=0.5)
#Valeur cumulée 90%Afficher la gamme de
plt.fill_between(d_xs[idx_u:], 0, d_ys[idx_u:], facecolor="r", alpha=0.5)
#Légende affichée en haut à droite
plt.legend(loc="upper right")
pdf_val={"down":d_xs[idx_d],"up":d_xs[idx_u]}
return pdf_val
#Le programme principal commence par le suivant
dataset = randn(50) #Générez 50 nombres aléatoires qui suivent une distribution uniforme
down=0.05
up=0.9
#Donnez un jeu de données et générez une fonction de densité du noyau. Il calcule également la fréquence cumulée de la fonction de densité du noyau et
#Valeur cumulée en baisse,Renvoie la valeur X en hausse.
val=pdf_kernel(dataset,down,up)
#Ecrivez une fonction de densité de noyau en utilisant seaborn.
sns.kdeplot(dataset,label="from seaborn")
Résultat de l’exécution </ b>
Recommended Posts