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)#
变分贝叶斯高斯混合估计。
此类允许推断高斯混合分布参数的近似后验分布。有效成分数量可以从数据中推断出来。
此类实现了两种类型的权重分布先验:带有狄利克雷分布的有限混合模型和带有狄利克雷过程的无限混合模型。实际上,狄利克雷过程推理算法是近似的,并使用具有固定最大成分数量的截断分布(称为棍子破碎表示法)。实际使用的成分数量几乎总是取决于数据。
Added in version 0.18.
更多信息请参阅 用户指南 。
- Parameters:
- n_componentsint, default=1
混合成分的数量。根据数据和
weight_concentration_prior
的值,模型可以通过将某些成分的weights_
设置为非常接近零的值来决定不使用所有成分。因此,有效成分数量小于 n_components。- 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++’ 作为初始化方法。- weight_concentration_prior_type{‘dirichlet_process’, ‘dirichlet_distribution’}, default=’dirichlet_process’
描述权重集中先验类型的字符串。
- weight_concentration_priorfloat or None, default=None
权重分布(狄利克雷分布)上每个成分的狄利克雷集中度。这在文献中通常称为 gamma。集中度越高,中心质量越多,导致更多成分被激活,而集中度参数越低,会导致混合权重单纯形的边缘质量越多。参数值必须大于 0。如果为 None,则设置为
1. / n_components
。- mean_precision_priorfloat or None, default=None
均值分布(高斯分布)上的精度先验。控制均值可以放置的范围。较大的值将聚类均值集中在
mean_prior
周围。参数值必须大于 0。如果为 None,则设置为 1。- mean_priorarray-like, shape (n_features,), default=None
均值分布(高斯分布)上的先验。如果为 None,则设置为 X 的均值。
- degrees_of_freedom_priorfloat or None, default=None
协方差分布(Wishart 分布)上的自由度先验。如果为 None,则设置为
n_features
。- covariance_priorfloat or array-like, default=None
协方差分布(Wishart 分布)上的先验。如果为 None,则使用 X 的协方差初始化经验协方差先验。形状取决于
covariance_type
(n_features, n_features) 如果 'full', (n_features, n_features) 如果 'tied', (n_features) 如果 'diag', float 如果 'spherical'
- random_stateint, RandomState instance or None, default=None
控制用于初始化参数的方法的随机种子(参见
init_params
)。 此外,它控制从拟合分布生成随机样本(参见方法sample
)。 传递一个 int 以在多次函数调用中获得可重复的输出。 参见 Glossary 。- warm_startbool, default=False
如果为 True,则上次拟合的解用作下一次调用 fit() 的初始化。这可以在对类似问题进行多次调用 fit() 时加快收敛速度。 参见 the Glossary 。
- 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,) 如果 'spherical', (n_features, n_features) 如果 'tied', (n_components, n_features) 如果 'diag', (n_components, n_features, n_features) 如果 'full'
- precisions_array-like
混合中每个成分的精度矩阵。精度矩阵是协方差矩阵的逆矩阵。协方差矩阵是对称正定的,因此高斯混合可以通过精度矩阵等效地参数化。存储精度矩阵而不是协方差矩阵在测试时计算新样本的对数似然更有效。形状取决于
covariance_type
(n_components,) 如果 'spherical', (n_features, n_features) 如果 'tied', (n_components, n_features) 如果 'diag', (n_components, n_features, n_features) 如果 'full'
- precisions_cholesky_array-like
每个混合成分的精度矩阵的 Cholesky 分解。精度矩阵是协方差矩阵的逆矩阵。协方差矩阵是对称正定的,因此高斯混合可以通过精度矩阵等效地参数化。存储精度矩阵而不是协方差矩阵在测试时计算新样本的对数似然更有效。形状取决于
covariance_type
(n_components,) 如果 'spherical', (n_features, n_features) 如果 'tied', (n_components, n_features) 如果 'diag', (n_components, n_features, n_features) 如果 'full'
- converged_bool
当达到最佳拟合推理的收敛时为 True,否则为 False。
- n_iter_int
最佳拟合推理达到收敛所用的步骤数。
- lower_bound_float
最佳拟合推理的模型证据(训练数据)的下界值。
- weight_concentration_prior_tuple or float
权重分布(狄利克雷分布)上每个成分的狄利克雷集中度。类型取决于
weight_concentration_prior_type
(float, float) 如果 'dirichlet_process'(Beta 参数), float 如果 'dirichlet_distribution'(狄利克雷参数)。
集中度越高,中心质量越多,导致更多成分被激活,而集中度参数越低,会导致混合权重单纯形的边缘质量越多。
- weight_concentration_array-like of shape (n_components,)
权重分布(狄利克雷分布)上每个成分的狄利克雷集中度。
- mean_precision_prior_float
均值分布(高斯分布)上的精度先验。控制均值可以放置的范围。较大的值将聚类均值集中在
mean_prior
周围。如果 mean_precision_prior 设置为 None,mean_precision_prior_
设置为 1。- mean_precision_array-like of shape (n_components,)
均值分布(高斯分布)上每个成分的精度。
- mean_prior_array-like of shape (n_features,)
均值分布(高斯分布)上的先验。
- degrees_of_freedom_prior_float
协方差分布(Wishart 分布)上的自由度先验。
- degrees_of_freedom_array-like of shape (n_components,)
模型中每个成分的自由度数。
- covariance_prior_float or array-like
协方差分布(Wishart 分布)上的先验。形状取决于
covariance_type
(n_features, n_features) 如果 'full', (n_features, n_features) 如果 'tied', (n_features) 如果 'diag', float 如果 'spherical'
- 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
GaussianMixture
使用 EM 拟合有限高斯混合。
References
Examples
>>> 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-step和M-step之间迭代max_iter
次,直到似然或下界的变化小于tol
,否则会引发ConvergenceWarning
。如果warm_start
为True
,则忽略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
中每个样本的对数似然。