Введение
В этом лабораторном занятии мы изучим оценку плотности, которая представляет собой метод оценки функции плотности вероятности случайной величины. В частности, мы сосредоточимся на оценке плотности с использованием ядер, которая представляет собой непараметрический метод оценки плотности.
Советы по использованию ВМ
После запуска ВМ перейдите в левый верхний угол и переключитесь на вкладку 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. Оценка плотности с использованием ядра - это мощный метод для оценки функции плотности вероятности случайной величины. Подгонкой оценщика плотности с использованием ядра к набору данных мы можем оценить базовую плотность и визуализировать ее с использованием гистограммы и оцененной функции плотности. Это позволяет получить представление о распределении данных и делать вероятностные прогнозы.