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' |
另见
有限高斯混合与EM拟合。
参考文献
方法 | 说明 |
---|---|
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_start
为True
,则将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 估计量实例 |