Spec-Zone.ru › scikit-learn

Примечание

Перейти в конец, чтобы скачать полный код примера или запустить этот пример в браузере с помощью JupyterLite или Binder.

Эллипсоиды модели гауссовых смесей

Построение эллипсоидов доверия для смеси двух гауссовых распределений, полученных с помощью метода максимизации ожидания (GaussianMixture class) и вариационного вывода (модели класса BayesianGaussianMixture с априорным процессом Дирихле).

Обе модели могут использовать пять компонентов для подгонки данных. Обратите внимание, что модель максимизации ожидания обязательно использует все пять компонентов, тогда как модель вариационного вывода фактически использует лишь столько компонентов, сколько необходимо для хорошей подгонки. Здесь видно, что модель максимизации ожидания произвольно разделяет некоторые компоненты, поскольку пытается подогнать слишком много компонентов, тогда как модель процесса Дирихле автоматически адаптирует их количество.

В этом примере это не показано, поскольку мы работаем в пространстве низкой размерности, но ещё одно преимущество модели процесса Дирихле заключается в том, что она эффективно подгоняет полные матрицы ковариаций даже тогда, когда примеров в кластере меньше, чем размерностей данных, благодаря регуляризующим свойствам алгоритма вывода.

Gaussian Mixture, Bayesian Gaussian Mixture with a Dirichlet process prior
/home/circleci/project/sklearn/mixture/_base.py:293: ConvergenceWarning: Best performing initialization did not converge. Try different init parameters, or increase max_iter, tol, or check for degenerate data.
  warnings.warn(
# Authors: The scikit-learn developers
# SPDX-License-Identifier: BSD-3-Clause

import itertools

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
from scipy import linalg

from sklearn import mixture

color_iter = itertools.cycle(["navy", "c", "cornflowerblue", "gold", "darkorange"])


def plot_results(X, Y_, means, covariances, index, title):
    splot = plt.subplot(2, 1, 1 + index)
    for i, (mean, covar, color) in enumerate(zip(means, covariances, color_iter)):
        v, w = linalg.eigh(covar)
        v = 2.0 * np.sqrt(2.0) * np.sqrt(v)
        u = w[0] / linalg.norm(w[0])
        # as the DP will not use every component it has access to
        # unless it needs it, we shouldn't plot the redundant
        # components.
        if not np.any(Y_ == i):
            continue
        plt.scatter(X[Y_ == i, 0], X[Y_ == i, 1], 0.8, color=color)

        # Plot an ellipse to show the Gaussian component
        angle = np.arctan(u[1] / u[0])
        angle = 180.0 * angle / np.pi  # convert to degrees
        ell = mpl.patches.Ellipse(mean, v[0], v[1], angle=180.0 + angle, color=color)
        ell.set_clip_box(splot.bbox)
        ell.set_alpha(0.5)
        splot.add_artist(ell)

    plt.xlim(-9.0, 5.0)
    plt.ylim(-3.0, 6.0)
    plt.xticks(())
    plt.yticks(())
    plt.title(title)


# Number of samples per component
n_samples = 500

# Generate random sample, two components
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]),
]

# Fit a Gaussian mixture with EM using five components
gmm = mixture.GaussianMixture(n_components=5, covariance_type="full").fit(X)
plot_results(X, gmm.predict(X), gmm.means_, gmm.covariances_, 0, "Gaussian Mixture")

# Fit a Dirichlet process Gaussian mixture using five components
dpgmm = mixture.BayesianGaussianMixture(n_components=5, covariance_type="full").fit(X)
plot_results(
    X,
    dpgmm.predict(X),
    dpgmm.means_,
    dpgmm.covariances_,
    1,
    "Bayesian Gaussian Mixture with a Dirichlet process prior",
)

plt.show()

Общее время выполнения скрипта: (0 минут 0.240 секунды)

Launch binder
Launch JupyterLite

Download Jupyter notebook: plot_gmm.ipynb

Download Python source code: plot_gmm.py

Download zipped: plot_gmm.zip

Похожие примеры

Синусоидальная кривая и модель гауссовых смесей

Анализ типов априорного параметра концентрации для вариационной байесовской гауссовой смеси

Ковариации GMM

Выбор модели гауссовых смесей

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/auto_examples/mixture/plot_gmm.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API