Оценка плотности с использованием ядра

Beginner

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

Введение

В этом лабораторном занятии мы изучим оценку плотности, которая представляет собой метод оценки функции плотности вероятности случайной величины. В частности, мы сосредоточимся на оценке плотности с использованием ядер, которая представляет собой непараметрический метод оценки плотности.

Советы по использованию ВМ

После запуска ВМ перейдите в левый верхний угол и переключитесь на вкладку Notebook, чтобы приступить к практике с использованием Jupyter Notebook.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Проверка операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Импортируем необходимые библиотеки

Сначала нам нужно импортировать библиотеки, которые мы будем использовать для оценки плотности. Мы будем использовать оценщик KernelDensity из модуля sklearn.neighbors и библиотеку numpy для манипуляций с данными.

from sklearn.neighbors import KernelDensity
import numpy as np

Сгенерируем некоторые образцы данных

Далее мы сгенерируем некоторые образцы данных для выполнения оценки плотности. В целях этой лабораторной работы давайте сгенерируем одномерный набор данных из 100 точек. Мы будем использовать нормальное распределение для генерации данных.

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

Подгоняем оценщик плотности с использованием ядра

Теперь мы создадим экземпляр оценщика KernelDensity и подгоним его под наши данные. Мы можем выбрать тип ядра и ширину полосы для оценщика. Например, мы можем использовать гауссово ядро и установить ширину полосы равной 0,2.

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

Оцениваем выборки

После подгонки оценщика мы можем использовать метод score_samples, чтобы вычислить логарифмическую правдоподобие выборок при оцененной функции плотности. Это даст нам меру того, насколько вероятна каждая выборка в соответствии с оценкой плотности.

scores = kde.score_samples(X)

Визуализируем оценку плотности

Наконец, мы можем визуализировать оценку плотности с использованием гистограммы и оцененной функции плотности. Мы можем построить гистограмму исходных данных, а также оцененную функцию плотности.

import matplotlib.pyplot as plt

bins = np.linspace(-5, 5, 50)
plt.hist(X, bins=bins, density=True, alpha=0.5, label='Histogram')
plt.plot(X, np.exp(scores), color='red', label='Kernel Density Estimate')
plt.legend()
plt.show()

Резюме

В рамках этой лабораторной работы мы узнали, как выполнять оценку плотности с использованием ядра с помощью оценщика KernelDensity из библиотеки scikit - learn. Оценка плотности с использованием ядра - это мощный метод для оценки функции плотности вероятности случайной величины. Подгонкой оценщика плотности с использованием ядра к набору данных мы можем оценить базовую плотность и визуализировать ее с использованием гистограммы и оцененной функции плотности. Это позволяет получить представление о распределении данных и делать вероятностные прогнозы.