Введение
В этом практическом занятии вы научитесь реализовывать модели смеси Гауссовых распределений (Gaussian Mixture Models, GMM) с использованием библиотеки scikit-learn в Python. GMM - это вероятностные модели, которые предполагают, что данные генерируются из смеси нескольких Гауссовых распределений. Они широко используются в различных областях, таких как компьютерное зрение, финансы и биоинформатика, для задач кластеризации и оценки плотности.
Советы по использованию ВМ
После запуска виртуальной машины (VM) нажмите в верхнем левом углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.
Иногда может потребоваться подождать несколько секунд, пока Jupyter Notebook полностью загрузится. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импортируем библиотеки
В этом шаге мы импортируем необходимые библиотеки для этого практического занятия. Для численного вычисления мы будем использовать NumPy, для визуализации данных - Matplotlib, а для реализации GMM - scikit-learn.
import numpy as np
import matplotlib.pyplot as plt
from sklearn import mixture
Генерируем данные
В этом шаге мы сгенерируем выборочное наборе данных, состоящий из двух Гауссовых распределений с разными средними значениями и ковариациями.
n_samples = 500
np.random.seed(0)
C = np.array([[0.0, -0.1], [1.7, 0.4]])
X = np.r_[
np.dot(np.random.randn(n_samples, 2), C),
0.7 * np.random.randn(n_samples, 2) + np.array([-6, 3]),
]
Реализуем модель смеси Гауссовых распределений
В этом шаге мы реализуем модель смеси Гауссовых распределений с использованием класса GaussianMixture из scikit-learn. Мы подберем параметры модели для нашего набора данных и предскажем метки кластеров для каждой точки данных. Наконец, мы построим результаты.
## Create a GMM object with 5 components
gmm = mixture.GaussianMixture(n_components=5, covariance_type="full")
## Fit the GMM to the data
gmm.fit(X)
## Predict the cluster labels
Y_ = gmm.predict(X)
## Plot the results
color_iter = ["navy", "c", "cornflowerblue", "gold", "darkorange"]
for i, color in enumerate(color_iter):
plt.scatter(
X[Y_ == i, 0], X[Y_ == i, 1], 0.8, color=color, label="Cluster {}".format(i)
)
plt.legend(loc="best")
plt.title("Gaussian Mixture Model")
plt.show()
Реализуем Байесовскую модель смеси Гауссовых распределений
В этом шаге мы реализуем Байесовскую модель смеси Гауссовых распределений с использованием класса BayesianGaussianMixture из scikit-learn. Эта модель имеет априорный процесс Дирихле, который автоматически настраивает количество кластеров в зависимости от данных. Мы подберем параметры модели для нашего набора данных и предскажем метки кластеров для каждой точки данных. Наконец, мы построим результаты.
## Create a Bayesian GMM object with 5 components
dpgmm = mixture.BayesianGaussianMixture(n_components=5, covariance_type="full")
## Fit the Bayesian GMM to the data
dpgmm.fit(X)
## Predict the cluster labels
Y_ = dpgmm.predict(X)
## Plot the results
color_iter = ["navy", "c", "cornflowerblue", "gold", "darkorange"]
for i, color in enumerate(color_iter):
plt.scatter(
X[Y_ == i, 0], X[Y_ == i, 1], 0.8, color=color, label="Cluster {}".format(i)
)
plt.legend(loc="best")
plt.title("Bayesian Gaussian Mixture Model with a Dirichlet process prior")
plt.show()
Резюме
В этом практическом занятии мы научились реализовывать модели смеси Гауссовых распределений с использованием библиотеки scikit-learn в Python. Мы также узнали, как сгенерировать набор данных, подобрать параметры моделей для данных и построить результаты. Модели смеси Гауссовых распределений - мощные инструменты для задач кластеризации и оценки плотности и широко используются в различных областях.