GaussianMixture#

class sklearn.mixture.GaussianMixture(n_components=1, *, covariance_type='full', tol=0.001, reg_covar=1e-06, max_iter=100, n_init=1, init_params='kmeans', weights_init=None, means_init=None, precisions_init=None, random_state=None, warm_start=False, verbose=0, verbose_interval=10)#

高斯混合模型。

表示高斯混合模型概率分布的表示。 该类允许估计高斯混合分布的参数。

更多信息请参阅 用户指南

Added in version 0.18.

Parameters:
n_componentsint, default=1

混合成分的数量。

covariance_type{‘full’, ‘tied’, ‘diag’, ‘spherical’}, default=’full’

描述要使用的协方差参数类型的字符串。 必须是以下之一:

  • ‘full’: 每个成分都有自己的通用协方差矩阵。

  • ‘tied’: 所有成分共享同一个通用协方差矩阵。

  • ‘diag’: 每个成分都有自己的对角协方差矩阵。

  • ‘spherical’: 每个成分都有自己的单一方差。

tolfloat, default=1e-3

收敛阈值。当较低界限的平均增益低于此阈值时,EM迭代将停止。

reg_covarfloat, default=1e-6

添加到协方差对角线上的非负正则化。 允许确保所有协方差矩阵都是正的。

max_iterint, default=100

要执行的EM迭代次数。

n_initint, default=1

要执行的初始化次数。保留最佳结果。

init_params{‘kmeans’, ‘k-means++’, ‘random’, ‘random_from_data’}, default=’kmeans’

用于初始化权重、均值和精度的方法。 字符串必须是以下之一:

  • ‘kmeans’ : 使用kmeans初始化责任。

  • ‘k-means++’ : 使用k-means++方法初始化。

  • ‘random’ : 随机初始化责任。

  • ‘random_from_data’ : 初始均值随机选择数据点。

Changed in version v1.1: init_params 现在接受 ‘random_from_data’ 和 ‘k-means++’ 作为 初始化方法。

weights_initarray-like of shape (n_components, ), default=None

用户提供的初始权重。 如果为None,则使用 init_params 方法初始化权重。

means_initarray-like of shape (n_components, n_features), default=None

用户提供的初始均值, 如果为None,则使用 init_params 方法初始化均值。

precisions_initarray-like, default=None

用户提供的初始精度(协方差矩阵的逆)。 如果为None,则使用’init_params’方法初始化精度。 形状取决于’covariance_type’:

(n_components,)                        if 'spherical',
(n_features, n_features)               if 'tied',
(n_components, n_features)             if 'diag',
(n_components, n_features, n_features) if 'full'
random_stateint, RandomState instance or None, default=None

控制用于初始化参数的方法的随机种子(见 init_params )。 此外,它控制从拟合分布生成随机样本(见方法 sample )。 传递一个int以在多次函数调用中重现输出。 参见 术语

warm_startbool, default=False

如果’warm_start’为True,则最后一次拟合的解用作下一次调用fit()的初始化。 这可以在多次调用fit()时加快收敛速度。 在这种情况下,’n_init’被忽略,只有在第一次调用时才进行单次初始化。 参见 术语

verboseint, default=0

启用详细输出。如果为1,则打印当前初始化和每次迭代步骤。 如果大于1,则还打印对数概率和每次步骤所需的时间。

verbose_intervalint, default=10

下一次打印前完成的迭代次数。

Attributes:
weights_array-like of shape (n_components,)

每个混合成分的权重。

means_array-like of shape (n_components, n_features)

每个混合成分的均值。

covariances_array-like

每个混合成分的协方差。 形状取决于 covariance_type

(n_components,)                        if 'spherical',
(n_features, n_features)               if 'tied',
(n_components, n_features)             if 'diag',
(n_components, n_features, n_features) if 'full'
precisions_array-like

混合中每个成分的精度矩阵。精度矩阵是协方差矩阵的逆。 协方差矩阵是对称正定的,因此高斯混合可以通过精度矩阵等效参数化。 存储精度矩阵而不是协方差矩阵,在测试时计算新样本的对数似然更高效。 形状取决于 covariance_type

(n_components,)                        if 'spherical',
(n_features, n_features)               if 'tied',
(n_components, n_features)             if 'diag',
(n_components, n_features, n_features) if 'full'
precisions_cholesky_array-like

每个混合成分的精度矩阵的cholesky分解。精度矩阵是协方差矩阵的逆。 协方差矩阵是对称正定的,因此高斯混合可以通过精度矩阵等效参数化。 存储精度矩阵而不是协方差矩阵,在测试时计算新样本的对数似然更高效。 形状取决于 covariance_type

(n_components,)                        if 'spherical',
(n_features, n_features)               if 'tied',
(n_components, n_features)             if 'diag',
(n_components, n_features, n_features) if 'full'
converged_bool

当EM的最佳拟合达到收敛时为True,否则为False。

n_iter_int

EM的最佳拟合达到收敛所用的步骤数。

lower_bound_float

EM最佳拟合的对数似然的下界值(相对于模型的训练数据)。

n_features_in_int

fit 期间看到的特征数量。

Added in version 0.24.

feature_names_in_ndarray of shape ( n_features_in_ ,)

fit 期间看到的特征名称。仅当 X 的特征名称均为字符串时定义。

Added in version 1.0.

See also

BayesianGaussianMixture

使用变分推理拟合的高斯混合模型。

Examples

>>> import numpy as np
>>> from sklearn.mixture import GaussianMixture
>>> X = np.array([[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]])
>>> gm = GaussianMixture(n_components=2, random_state=0).fit(X)
>>> gm.means_
array([[10.,  2.],
       [ 1.,  2.]])
>>> gm.predict([[0, 0], [12, 3]])
array([1, 0])
aic(X)#

Akaike信息准则用于输入X上的当前模型。

你可以参考这个 数学部分 以获取更多关于所使用的AIC公式的详细信息。

Parameters:
Xarray of shape (n_samples, n_dimensions)

输入样本。

Returns:
aicfloat

越低越好。

bic(X)#

贝叶斯信息准则用于输入数据 X 的当前模型。

你可以参考这个 数学部分 以获取更多关于所用 BIC 公式的详细信息。

Parameters:
X形状为 (n_samples, n_dimensions) 的数组

输入样本。

Returns:
bicfloat

越低越好。

fit(X, y=None)#

估计模型的参数使用EM算法。

该方法将模型拟合 n_init 次,并设置具有最大似然或下界的参数。在每次试验中,该方法在E-step和M-step之间迭代 max_iter 次,直到似然或下界的变化小于 tol ,否则会引发 ConvergenceWarning 。如果 warm_startTrue ,则忽略 n_init ,并且在第一次调用时执行单次初始化。在连续调用时,训练从上次停止的地方开始。

Parameters:
X类数组,形状为 (n_samples, n_features)

包含n_features维数据点的列表。每一行对应一个数据点。

y忽略

未使用,为了API一致性而存在。

Returns:
self对象

拟合的混合模型。

fit_predict(X, y=None)#

估计模型参数使用X并预测X的标签。

该方法将模型拟合n_init次,并设置具有最大似然或下界的参数。在每次试验中,该方法在E步和M步之间迭代 max_iter 次,直到似然或下界的变化小于 tol ,否则会引发:class:~sklearn.exceptions.ConvergenceWarning 。拟合后,它预测输入数据点的最可能标签。

Added in version 0.20.

Parameters:
Xarray-like of shape (n_samples, n_features)

包含n_features维数据点的列表。每一行对应一个数据点。

yIgnored

未使用,为保持API一致性而存在。

Returns:
labelsarray, shape (n_samples,)

组件标签。

get_metadata_routing()#

获取此对象的元数据路由。

请查看 用户指南 以了解路由机制的工作原理。

Returns:
routingMetadataRequest

MetadataRequest 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。

Returns:
paramsdict

参数名称映射到它们的值。

predict(X)#

预测使用训练模型对数据样本X的标签。

Parameters:
X形状为 (n_samples, n_features) 的类数组

包含 n_features 维数据点的列表。每一行 对应一个数据点。

Returns:
labels数组, 形状 (n_samples,)

组件标签。

predict_proba(X)#

评估每个样本的各成分密度。

Parameters:
X形状为 (n_samples, n_features) 的类数组

包含 n_features 维数据点的列表。每一行 对应一个数据点。

Returns:
resp数组, 形状 (n_samples, n_components)

每个高斯成分对 X 中每个样本的密度。

sample(n_samples=1)#

生成从拟合的高斯分布中随机抽取的样本。

Parameters:
n_samplesint, 默认=1

要生成的样本数量。

Returns:
Xarray, shape (n_samples, n_features)

随机生成的样本。

yarray, shape (n_samples,)

组件标签。

score(X, y=None)#

计算给定数据 X 的每个样本的平均对数似然。

Parameters:
X形状为 (n_samples, n_dimensions) 的类数组

包含 n_features 维数据点的列表。每一行 对应一个数据点。

y忽略

未使用,为保持 API 一致性而存在。

Returns:
log_likelihoodfloat

高斯混合模型下 X 的对数似然。

score_samples(X)#

计算每个样本的对数似然。

Parameters:
X形状为 (n_samples, n_features) 的类数组

包含 n_features 维数据点的列表。每一行 对应一个数据点。

Returns:
log_prob数组, 形状 (n_samples,)

当前模型下 X 中每个样本的对数似然。

set_params(**params)#

设置此估计器的参数。

该方法适用于简单估计器以及嵌套对象(例如 Pipeline )。后者具有形式为 <component>__<parameter> 的参数,以便可以更新嵌套对象的每个组件。

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。