Spec-Zone.ru › scikit-learn

Примечание

Перейти к концу для скачивания полного примера кода. Или запустить этот пример в вашем браузере через JupyterLite или Binder

Эллипсоиды модели гауссовского смешения

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

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

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

Gaussian Mixture, Bayesian Gaussian Mixture with a Dirichlet process prior
/home/circleci/project/sklearn/mixture/_base.py:269: ConvergenceWarning:

Best performing initialization did not converge. Try different init parameters, or increase max_iter, tol, or check for degenerate data.
# 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,284 секунды)

Launch binder
Launch JupyterLite

Download Jupyter notebook: plot_gmm.ipynb

Download Python source code: plot_gmm.py

Download zipped: plot_gmm.zip

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

Модель гауссовского смешения для синусоидальной кривой

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

Ковариации GMM

Выбор модели гауссовского смешения

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

Spec-Zone.ru

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