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)[源代码]#

高斯混合物的变分Bayesian估计。

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

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

Added in version 0.18.

阅读更多的 User Guide .

参数:
n_componentsint,默认=1

混合物成分的数量。取决于数据和 weight_concentration_prior 模型可以通过设置某些组件来决定不使用所有组件 weights_ 值非常接近于零。因此,有效成分的数量小于n_components。

covariance_type默认值为“full”、“tied”、“diag'、”spherical'},默认值为“full”

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

  • “完整”(每个分量都有自己的一般协方差矩阵),

  • “绑定”(所有组件共享相同的一般协方差矩阵),

  • “diag”(每个分量具有其自己的对角协方差矩阵),

  • “球形”(每个分量都有自己的单一方差)。

tol浮点数,默认值= 1 e-3

收敛阈值。当(训练数据相对于模型的)似然性的下限平均收益低于此阈值时,EM迭代将停止。

reg_covarfloat,默认= 1 e-6

将非负正规化添加到协方差的对角线上。允许确保协方差矩阵均为正值。

max_iterint,默认=100

要执行的EM迭代次数。

n_initint,默认=1

要执行的初始化数量。保留可能性下限最高的结果。

init_params' k-means ',' k-means++',' random_from_data '}, 默认=' kmeans '

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

  • “kmeans”:使用kmeans初始化责任。

  • 'k-means++':使用k-means++方法进行初始化。

  • “随机”:责任随机初始化。

  • 'random_from_data':初始平均值是随机选择的数据点。

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

weight_concentration_prior_type“dirichlet_Process”,“dirichlet_Distribution '}, 默认=' dirichlet_Process '

描述之前重量浓度类型的字符串。

weight_concentration_prior浮动或无,默认=无

重量分布上各成分的Dirichlet浓度(Dirichlet)。这在文献中通常被称为伽玛。浓度越高,中心的质量越多,并将导致更多成分处于活性状态,而浓度参数越低,将导致混合物重量单一边缘的质量越大。参数的值必须大于0。如果为无,则设置为 1. / n_components .

mean_precision_prior浮动或无,默认=无

均值分布(高斯分布)的精度先验。控制可以放置方法的范围。较大的值将聚类平均值集中在 mean_prior .参数的值必须大于0。如果为无,则设置为1。

mean_prior类数组,形状(n_features,),默认=无

均值分布(高斯)的先验。如果为无,则将其设置为X的平均值。

degrees_of_freedom_prior浮动或无,默认=无

协方差分布上自由度数的先验(Wishart)。如果为无,则设置为 n_features .

covariance_prior浮点或类数组,默认=无

协方差分布的先验(Wishart)。如果为无,则使用X的协方差初始化指数协方差先验。形状取决于 covariance_type

(n_features, n_features) if 'full',
(n_features, n_features) if 'tied',
(n_features)             if 'diag',
float                    if 'spherical'
random_stateint,RandomState实例或无,默认=无

控制分配给选择来初始化参数的方法的随机种子(请参阅 init_params ).此外,它还控制从匹配分布生成随机样本(请参阅方法 sample ).传递int以获得跨多个函数调用的可重复输出。看到 Glossary .

warm_start布尔,默认=假

如果“warm_start”为True,则最后一次fit的解将用作下一次fit()调用的初始化。当对类似问题多次调用fit时,这可以加快收敛速度。看到 the Glossary .

verboseint,默认=0

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

verbose_intervalint,默认值=10

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

属性:
weights_形状类似阵列(n_components,)

每个混合物成分的重量。

means_形状类似阵列(n_组件,n_特征)

每个混合物成分的平均值。

covariances_阵列状

每个混合成分的协方差。形状取决于 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_阵列状

混合物中每个成分的精确矩阵。精度矩阵是协方差矩阵的逆矩阵。协方差矩阵是对称的,因此高斯混合可以通过精度矩阵等效参数化。存储精度矩阵而不是协方差矩阵可以更有效地计算测试时新样本的log似然性。形状取决于 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_阵列状

每个混合分量的精度矩阵的Skicky分解。精度矩阵是协方差矩阵的逆矩阵。协方差矩阵是对称的,因此高斯混合可以通过精度矩阵等效参数化。存储精度矩阵而不是协方差矩阵可以更有效地计算测试时新样本的log似然性。形状取决于 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

当达到最佳推理的收敛时为真,否则为假。

n_iter_int

最佳推理适合达到收敛所使用的步骤数。

lower_bound_浮子

推理最佳契合度的模型证据(训练数据)的下限值。

weight_concentration_prior_tuple或float

重量分布上各成分的Dirichlet浓度(Dirichlet)。类型取决于 weight_concentration_prior_type

(float, float) if 'dirichlet_process' (Beta parameters),
float          if 'dirichlet_distribution' (Dirichlet parameters).

浓度越高,中心的质量越多,并将导致更多的成分活跃,而浓度参数越低,则会导致单形边缘的质量越大。

weight_concentration_形状类似阵列(n_components,)

The dirichlet concentration of each component on the weight distribution (Dirichlet).

mean_precision_prior_浮子

均值分布(高斯分布)的精度先验。控制可以放置方法的范围。较大的值将聚类平均值集中在 mean_prior .如果mean_precision_prior设置为无, mean_precision_prior_ 设置为1。

mean_precision_形状类似阵列(n_components,)

平均分布(高斯)上每个分量的精度。

mean_prior_形状类似阵列(n_features,)

均值分布(高斯)的先验。

degrees_of_freedom_prior_浮子

协方差分布上自由度数的先验(Wishart)。

degrees_of_freedom_形状类似阵列(n_components,)

模型中每个零部件的自由度数。

covariance_prior_浮动或类数组

协方差分布的先验(Wishart)。形状取决于 covariance_type

(n_features, n_features) if 'full',
(n_features, n_features) if 'tied',
(n_features)             if 'diag',
float                    if 'spherical'
n_features_in_int

期间看到的功能数量 fit .

Added in version 0.24.

feature_names_in_ :nd形状数组 (n_features_in_ ,)nd数组形状(

Names of features seen during fit. Defined only when X has feature names that are all strings.

Added in version 1.0.

参见

GaussianMixture

有限高斯混合与EM进行匹配。

引用

[1]

Bishop, Christopher M. (2006). "Pattern recognition and machine learning". Vol. 4 No. 4. New York: Springer. <https://www.springer.com/kr/book/9780387310732> _

[2]

Hagai Attias. (2000). "A Variational Bayesian Framework for Graphical Models". In Advances in Neural Information Processing Systems 12. <https://citeseerx.ist.psu.edu/doc_view/pid/ee844fd96db7041a9681b5a18bff008912052c7e> _

[3]

Blei, David M. and Michael I. Jordan. (2006). "Variational inference for Dirichlet process mixtures". Bayesian analysis 1.1 <https://www.cs.princeton.edu/courses/archive/fall11/cos597C/reading/BleiJordan2005.pdf> _

示例

>>> import numpy as np
>>> from sklearn.mixture import BayesianGaussianMixture
>>> X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [12, 4], [10, 7]])
>>> bgm = BayesianGaussianMixture(n_components=2, random_state=42).fit(X)
>>> bgm.means_
array([[2.49... , 2.29...],
       [8.45..., 4.52... ]])
>>> bgm.predict([[0, 0], [9, 3]])
array([0, 1])
fit(X, y=None)[源代码]#

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

该方法适合该模型 n_init 时间并设置模型具有最大可能性或下限的参数。在每次试验中,该方法在E步和M步之间迭代, max_iter 直到可能性或下限的变化小于 tol ,否则, ConvergenceWarning 被提出。如果 warm_startTrue 那么 n_init 被忽略,并在第一次调用时执行单个初始化。连续通话后,训练从停止的地方开始。

参数:
X形状类似阵列(n_samples,n_features)

n_特征维数据点列表。每一行对应一个数据点。

y忽视

未使用,按照惯例,为了API一致性而存在。

返回:
self对象

合适的混合物。

fit_predict(X, y=None)[源代码]#

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

该方法对模型进行n_init次的匹配,并设置模型具有最大可能性或下限的参数。在每次试验中,该方法在E步和M步之间迭代, max_iter 直到可能性或下限的变化小于 tol ,否则, ConvergenceWarning 被提出。匹配后,它预测输入数据点的最可能标签。

Added in version 0.20.

参数:
X形状类似阵列(n_samples,n_features)

n_特征维数据点列表。每一行对应一个数据点。

y忽视

未使用,按照惯例,为了API一致性而存在。

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

组件标签。

get_metadata_routing()[源代码]#

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

请检查 User Guide 关于路由机制如何工作。

返回:
routingMetadataRequest

A MetadataRequest 封装路由信息。

get_params(deep=True)[源代码]#

获取此估计器的参数。

参数:
deep布尔,默认=True

如果为True,将返回此估计量和包含的作为估计量的子对象的参数。

返回:
paramsdict

参数名称映射到其值。

predict(X)[源代码]#

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

参数:
X形状类似阵列(n_samples,n_features)

n_特征维数据点列表。每一行对应一个数据点。

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

组件标签。

predict_proba(X)[源代码]#

评估每个样品的组分密度。

参数:
X形状类似阵列(n_samples,n_features)

n_特征维数据点列表。每一行对应一个数据点。

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

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

sample(n_samples=1)[源代码]#

从匹配的高斯分布生成随机样本。

参数:
n_samplesint,默认=1

要生成的样本数量。

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

随机生成的样本。

y数组,形状(nsamples,)

组件标签。

score(X, y=None)[源代码]#

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

参数:
X形状类似阵列(n_样本,n_维度)

n_特征维数据点列表。每一行对应一个数据点。

y忽视

未使用,按照惯例,为了API一致性而存在。

返回:
log_likelihood浮子

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

score_samples(X)[源代码]#

计算每个样本的log似然。

参数:
X形状类似阵列(n_samples,n_features)

n_特征维数据点列表。每一行对应一个数据点。

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

每个样本的日志可能性 X 在当前的模型下。

set_params(**params)[源代码]#

设置此估计器的参数。

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

参数:
**paramsdict

估计参数。

返回:
self估计器实例

估计实例。