Модель смеси Гауссовых распределений

Machine LearningMachine LearningBeginner
Практиковаться сейчас

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии вы научитесь реализовывать модели смеси Гауссовых распределений (Gaussian Mixture Models, GMM) с использованием библиотеки scikit-learn в Python. GMM - это вероятностные модели, которые предполагают, что данные генерируются из смеси нескольких Гауссовых распределений. Они широко используются в различных областях, таких как компьютерное зрение, финансы и биоинформатика, для задач кластеризации и оценки плотности.

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

После запуска виртуальной машины (VM) нажмите в верхнем левом углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-49139{{"Модель смеси Гауссовых распределений"}} end

Импортируем библиотеки

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