sklearn.mixture.BayesianGaussianMixture

class sklearn.mixture.BayesianGaussianMixture(*, n_components=1, covariance_type='full', tol=0.001, reg_covar=1e-06, max_iter=100, n_init=1, init_params='kmeans', weight_concentration_prior_type='dirichlet_process', weight_concentration_prior=None, mean_precision_prior=None, mean_prior=None, degrees_of_freedom_prior=None, covariance_prior=None, random_state=None, warm_start=False, verbose=0, verbose_interval=10)

[源码]

高斯混合的变分贝叶斯估计。

此类允许推断高斯混合分布参数的近似后验分布。组件的有效数量可以从数据中推断出来。

此类实现了两种类型的权重分布先验:一种是具有Dirichlet分布的有限混合模型,另一种是具有Dirichlet过程的无限混合模型。在实际应用中,Dirichlet过程推理算法是近似的,并使用具有固定最大组件数的截断分布(称为Stick-breaking representation)。实际使用的组件数量绝大多数取决于数据。

版本0.18中的新功能。

用户指南中阅读更多内容。

参数 说明
n_components int, defaults to 1.
混合高斯模型的个数,默认为1。根据数据和weight_concentration_prior模型的值,模型可以通过将某些组件设置weights_为非常接近零的值来决定不使用所有组件。因此,有效分量的数量小于n_components。
covariance_type {‘full’, ‘tied’, ‘diag’, ‘spherical’}, defaults to ‘full’
描述要使用的协方差参数类型的字符串。必须是以下之一:
'full' (each component has its own general covariance matrix),
'tied' (all components share the same general covariance matrix),
'diag' (each component has its own diagonal covariance matrix),
'spherical' (each component has its own single variance).
tol float, defaults to 1e-3.
EM 迭代停止阈值,默认为 1e-3 即 0.001。当(关于模型的训练数据)可能性的下限平均增益低于此阈值时,EM迭代将停止。
reg_covar float, defaults to 1e-6.
协方差对角非负正则化,保证协方差矩阵均为正
max_iter int, defaults to 100.
要执行的EM迭代次数。
n_init int, defaults to 1.
初始化次数,用于产生最佳初始参数,默认为 1
init_params {‘kmeans’, ‘random’}, defaults to ‘kmeans’.
用于初始化权重,均值和协方差的方法。必须是以下之一:
'kmeans' : responsibilities are initialized using kmeans.
'random' : responsibilities are initialized randomly.
weight_concentration_prior_type str, defaults to ‘dirichlet_process’.
描述先前权重浓度类型的字符串。必须是以下之一:
'dirichlet_process' (using the Stick-breaking representation),
'dirichlet_distribution' (can favor more uniform weights).
weight_concentration_prior float,None, optional.
每个组分在权重分布上的dirichlet浓度(dirichlet)。这在文献中通常称为伽玛。浓度越高,中心的质量越大,活性组分越多。参数的值必须大于0。如果为None,则将其设置为:1. / n_components.
mean_precision_prior float,None, optional.
平均分布(高斯分布)的精度先验。控制可以放置方法的范围。值越大,聚类平均值就越集中。参数的值必须大于0。如果为“无”,则设置为1。
mean_prior array-like, shape (n_features,), optional
均值上的先验分布(高斯)。如果为None,则将其设置为X的平均值。
degrees_of_freedom_prior float,None, optional.
协方差分布上的自由度数的先验(Wishart)。如果为None,则将其设置为n_features
covariance_prior float or array-like, optional
协方差分布的先验(Wishart)。如果为None,则使用X的协方差初始化半协方差先验。形状取决于covariance_type
(n_features, n_features) if 'full',
(n_features, n_features) if 'tied',
(n_features) if 'diag',
float if 'spherical'
random_state int, RandomState instance or None, optional (default=None)
控制分配给用于初始化参数的方法的随机种子(请参阅参考资料init_params)。另外,它控制拟合分布中随机样本的生成(请参见方法sample)。为多个函数调用传递可重复输出的int值。请参阅词汇表
warm_start bool, default to False.
如果'warm_start'为True,则最后一次拟合的解决方案将用作下一次fit()的初始化。在类似问题上多次调用fit时,这可以加快收敛速度。请参阅词汇表
verbose int, default to 0.
启用详细输出。如果为1,则打印当前的初始化和每个迭代步骤。如果大于1,则还将打印对数概率和每个步骤所需的时间。
verbose_interval int, default to 10.
下一次打印之前完成的迭代次数。
属性 说明
weights_ array-like, shape (n_components,)
每个混合元素权重
means_ array-like, 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
bool类型,在fit()中达到收敛时为true,否则为false。
n_iter_ int
最佳拟合达到收敛所使用的步数。
lower_bound_ float
float类型,EM最佳拟合的对数似然(与模型相关的训练数据)的下限值。
weight_concentration_prior_ tuple or float
每个组分在权重分布上的dirichlet浓度(dirichlet)。类型取决于 weight_concentration_prior_type
浓度越高,中心的质量越大,活性组分越多,而浓度越低,单纯形边缘的质量越大。
weight_concentration_ array-like, shape (n_components,)
每个组分在权重分布上的dirichlet浓度(dirichlet)。
mean_precision_prior_ float
均值分布上的先验精度(高斯)。控制可以放置工具的范围。较大的值将聚类均值集中在mean_prior周围。如果mean_precision_prior设置为None,mean_precision_prior_则设置为1。
mean_precision_ array-like, shape (n_components,)
每个分量在平均分布上的精度(高斯)。
mean_prior_ array-like, shape (n_features,)
均值上的先验分布(高斯)。
degrees_of_freedom_prior_ float
协方差分布上的自由度数的先验(Wishart)。
degrees_of_freedom_ array-like, shape (n_components,)
模型中每个组件的自由度数。
covariance_prior_ float or array-like
协方差分布的先验(Wishart)。形状取决于covariance_type
(n_features, n_features) if 'full',
(n_features, n_features) if 'tied',
(n_features) if 'diag',
float if 'spherical'

另见

GaussianMixture

有限高斯混合与EM拟合。

参考文献

1 Bishop, Christopher M. (2006). “Pattern recognition and machine learning”. Vol. 4 No. 4. New York: Springer.

2 Hagai Attias. (2000). “A Variational Bayesian Framework for Graphical Models”. In Advances in Neural Information Processing Systems 12.

3 Blei, David M. and Michael I. Jordan. (2006). “Variational inference for Dirichlet process mixtures”. Bayesian analysis 1.1

方法 说明
fit(X[, y]) 使用EM算法估算模型参数。
fit_predict(X[, y]) 使用X估算模型参数并预测X的标签。
get_params([deep]) 获取此估计量的参数。
predict(X) 使用训练好的模型预测X中数据样本的标签。
predict_proba(X) 给定数据,预测每个分量的后验概率。
sample([n_samples]) 从拟合的高斯分布中生成随机样本。
score(X[, y]) 计算给定数据X的每样本平均对数似然度。
score_samples(X) 计算每个样本的加权对数概率。
set_params(**params) 设置此估算量的参数。
__init__(*,n_components=1,covariance_type='full',tol=0.001,reg_covar=1e-06, max_iter=100, n_init=1, init_params='kmeans', weight_concentration_prior_type='dirichlet_process', weight_concentration_prior=None, mean_precision_prior=None, mean_prior=None, degrees_of_freedom_prior=None, covariance_prior=None, random_state=None, warm_start=False, verbose=0, verbose_interval=10)

[源码]

初始化self, 请参阅help(type(self))以获得准确的说明。

fit(X, y=None)

[源码]

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

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

参数 说明
X array-like, shape (n_samples, n_features)
n_features维数据点列表。每行对应一个数据点。
返回值 说明
self -
fit_predict(X, y=None)

[源码]

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

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

0.20版中的新功能。

参数 说明
X array-like, shape (n_samples, n_features)
n_features维数据点列表。每行对应一个数据点。
返回值 说明
labels array, shape (n_samples,)
组件标签
get_params(deep=True)

[源码]

获取此估计量的参数。

参数 说明
deep bool, default=True
如果为True,则将返回此估算量和作为估算量的所包含子对象的参数。
返回值 说明
params mapping of string to any
参数名称映射到其值。
predict(X)

[源码]

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

参数 说明
X array-like, shape (n_samples, n_features)
n_features维数据点列表。每行对应一个数据点。
返回值 说明
labels array, shape (n_samples,)
组件标签。
predict_proba(X)

[源码]

给定数据,预测每个分量的后验概率。

参数 说明
X array-like, shape (n_samples, n_features)
n_features维数据点列表。每行对应一个数据点。
返回值 说明
resp array, shape (n_samples, n_components)
返回给定每个样本的模型中每个高斯(状态)的概率。
sample(n_samples=1)

[源码]

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

参数 说明
n_samples int, optional
要生成的样本数。默认为1。
返回值 说明
X array, shape (n_samples, n_features)
随机生成的样本
y array, shape (nsamples,)
组件标签
score(X, y=None)

[源码]

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

参数 说明
X array-like, shape (n_samples, n_dimensions)
n_features维数据点列表。每行对应一个数据点。
返回值 说明
log_likelihood float
给定X的高斯混合的对数似然。
score_samples(X)

[源码]

计算每个样本的加权对数概率。

参数 说明
X array-like, shape (n_samples, n_features)
n_features维数据点列表。每行对应一个数据点。
返回值 说明
log_prob array, shape (n_samples,)
在X中记录每个数据点的概率。
set_params(**params)

[源码]

设置此估算器的参数。

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

参数 说明
**params dict
估算量参数。
返回值 说明
self object
估计量实例