[PYTHON] Ecrire une fonction de densité du noyau

1 Ce que tu veux faire

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)

2 code

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>

La plage de valeur cumulée de 0 à bas (5% dans l'exemple illustré) et la plage de valeur cumulée en haut (90% dans l'exemple illustré) à 100% sont affichées.

69.JPG

Recommended Posts

Ecrire une fonction de densité du noyau
[Go] Comment écrire ou appeler une fonction
Comparaison des fonctions du noyau GPy
Différencier une fonction à deux variables
Faire un décorateur de fonction
Comment estimer la densité du noyau
Créer une fonction en Python
Remarque sur la compilation du noyau
Comment appeler une fonction
Estimation de la densité du noyau en Python
Lire et écrire des fichiers
Essayez de dessiner une fonction logistique
Écrire et lire des fichiers
Qu'est-ce qu'une fonction de rappel?
Ecrire une dichotomie en Python
Ecrire un test piloté par table en C
Une fonction qui renvoie un nom aléatoire
Ecrire une fonction AWS Lambda en Python
Écrire la sortie standard dans un fichier
Ecrire des algorithmes A * (A-star) en Python
Comment créer une fonction récursive
Ecrire un réseau résiduel avec TFLearn
[Python] Faire de la fonction une fonction lambda
Ecrire un graphique à secteurs en Python
Ecrire le plugin vim en Python
Python --Fonction d'appel dynamique à partir d'une chaîne
Écrire une recherche de priorité en profondeur en Python
Ecrire un serveur TCP super simple
Écrire un histogramme empilé avec matplotlib
Ecrire un script batch avec Python3.5 ~
Utiliser un noyau personnalisé avec WSL2
Élément de mémo Python efficace 4 Écrire une fonction d'aide au lieu d'une expression compliquée
[Introduction à Python] Comment écrire une chaîne de caractères avec la fonction format