高斯混合模型#

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)[source]#

高斯混合模型。

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

更多信息请阅读 用户指南

v0.18版本新增。

参数:
n_componentsint,默认为1

混合成分的数量。

covariance_type{'full', 'tied', 'diag', 'spherical'},默认为'full'

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

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

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

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

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

tolfloat,默认为1e-3

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

reg_covarfloat,默认为1e-6

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

max_iterint,默认为100

要执行的EM迭代次数。

n_initint,默认为1

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

init_params{'kmeans', 'k-means++', 'random', 'random_from_data'},默认为'kmeans'

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

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

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

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

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

v1.1版本变更: init_params 现在接受 ‘random_from_data’ 和 ‘k-means++’ 作为初始化方法。

weights_initarray-like 形状为 (n_components,),默认为None

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

means_initarray-like 形状为 (n_components, n_features),默认为None

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

precisions_initarray-like,默认为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 实例或 None,默认为 None

控制赋予用于初始化参数的方法(参见 init_params)的随机种子。此外,它还控制从拟合分布生成随机样本(参见方法 sample)。传递一个 int 以在多次函数调用中获得可重复的输出。参见 词汇表

warm_startbool,默认为False

如果 'warm_start' 为 True,则上次拟合的解将用作下次调用 fit() 的初始化。当在类似问题上多次调用 fit() 时,这可以加快收敛速度。在这种情况下,'n_init' 将被忽略,并且只有在第一次调用时才会发生单次初始化。参见 词汇表

verboseint,默认为0

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

verbose_intervalint,默认为10

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

属性:
weights_array-like 形状为 (n_components,)

每个混合成分的权重。

means_array-like 形状为 (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期间看到的特征数量。

版本0.24中添加。

feature_names_in_ndarray of shape (n_features_in_,)

fit期间看到的特征名称。仅当X具有全是字符串的特征名称时才定义。

版本1.0中添加。

另请参见

贝叶斯高斯混合模型 (BayesianGaussianMixture)

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

示例

>>> 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)[source]#

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

您可以参考此数学部分以了解有关所用AIC公式的更多详细信息。

参数:
Xarray of shape (n_samples, n_dimensions)

输入样本。

返回:
aicfloat

数值越低越好。

bic(X)[source]#

当前模型在输入X上的贝叶斯信息准则。

您可以参考此数学部分以了解有关所用BIC公式的更多详细信息。

参数:
Xarray of shape (n_samples, n_dimensions)

输入样本。

返回:
bicfloat

数值越低越好。

fit(X, y=None)[source]#

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

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

参数:
Xarray-like of shape (n_samples, n_features)

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

yIgnored

未使用,根据约定保留以保持API一致性。

返回:
selfobject

拟合的混合模型。

fit_predict(X, y=None)[source]#

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

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

版本0.20中添加。

参数:
Xarray-like of shape (n_samples, n_features)

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

yIgnored

未使用,根据约定保留以保持API一致性。

返回:
labelsarray, shape (n_samples,)

组件标签。

get_metadata_routing()[source]#

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

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

返回:
routingMetadataRequest

一个MetadataRequest,封装了路由信息。

get_params(deep=True)[source]#

获取此估计器的参数。

参数:
deep布尔值,默认为 True

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

返回:
params字典

参数名称与其值的映射。

predict(X)[source]#

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

参数:
Xarray-like of shape (n_samples, n_features)

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

返回:
labelsarray, shape (n_samples,)

组件标签。

predict_proba(X)[source]#

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

参数:
Xarray-like of shape (n_samples, n_features)

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

返回:
resp数组,形状 (n_samples, n_components)

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

sample(n_samples=1)[source]#

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

参数:
n_samples整数,默认为 1

要生成的样本数量。

返回:
X数组,形状 (n_samples, n_features)

随机生成的样本。

y数组,形状 (nsamples,)

组件标签。

score(X, y=None)[source]#

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

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

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

yIgnored

未使用,根据约定保留以保持API一致性。

返回:
log_likelihood浮点数

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

score_samples(X)[source]#

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

参数:
Xarray-like of shape (n_samples, n_features)

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

返回:
log_prob数组,形状 (n_samples,)

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

set_params(**params)[source]#

设置此估计器的参数。

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

参数:
**params字典

估计器参数。

返回:
self估计器实例

估计器实例。