Estimation de la densité en utilisant la densité à noyau

Beginner

This tutorial is from open-source community. Access the source code

Introduction

Dans ce laboratoire, nous allons explorer l'estimation de la densité, qui est une technique utilisée pour estimer la fonction de densité de probabilité d'une variable aléatoire. Plus précisément, nous nous concentrerons sur l'estimation de densité à noyau, qui est une méthode non paramétrique pour estimer la densité.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour la pratique.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez des commentaires après la session, et nous résoudrons rapidement le problème pour vous.

Importez les bibliothèques nécessaires

Tout d'abord, nous devons importer les bibliothèques que nous utiliserons pour l'estimation de la densité. Nous utiliserons l'estimateur KernelDensity du module sklearn.neighbors, et la bibliothèque numpy pour la manipulation des données.

from sklearn.neighbors import KernelDensity
import numpy as np

Générez quelques données d'échantillonnage

Ensuite, nous allons générer quelques données d'échantillonnage pour effectuer une estimation de la densité. Dans le cadre de ce laboratoire, générons un ensemble de données en une dimension avec 100 points. Nous utiliserons une distribution normale pour générer les données.

np.random.seed(0)
X = np.random.normal(0, 1, 100).reshape(-1, 1)

Ajustez un estimateur de densité à noyau

Maintenant, nous allons créer une instance de l'estimateur KernelDensity et l'ajuster à nos données. Nous pouvons choisir le type de noyau et la largeur de bande pour l'estimateur. Par exemple, nous pouvons utiliser un noyau gaussien et définir la largeur de bande sur 0,2.

kde = KernelDensity(kernel='gaussian', bandwidth=0.2).fit(X)

Évaluez les échantillons

Après avoir ajusté l'estimateur, nous pouvons utiliser la méthode score_samples pour calculer la log-vraisemblance des échantillons sous la fonction de densité estimée. Cela nous donnera une mesure de la probabilité de chaque échantillon selon l'estimation de la densité.

scores = kde.score_samples(X)

Visualisez l'estimation de la densité

Enfin, nous pouvons visualiser l'estimation de la densité en utilisant un histogramme et la fonction de densité estimée. Nous pouvons tracer l'histogramme des données d'origine ainsi que la fonction de densité estimée.

import matplotlib.pyplot as plt

bins = np.linspace(-5, 5, 50)
plt.hist(X, bins=bins, density=True, alpha=0.5, label='Histogramme')
plt.plot(X, np.exp(scores), color='red', label='Estimation de la densité à noyau')
plt.legend()
plt.show()

Résumé

Dans ce laboratoire, nous avons appris à effectuer une estimation de la densité à noyau en utilisant l'estimateur KernelDensity de scikit-learn. L'estimation de la densité à noyau est une technique puissante pour estimer la fonction de densité de probabilité d'une variable aléatoire. En ajustant un estimateur de densité à noyau à un ensemble de données, nous pouvons estimer la densité sous-jacente et la visualiser à l'aide d'un histogramme et de la fonction de densité estimée. Cela nous permet de mieux comprendre la distribution des données et de faire des prédictions probabilistes.