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)[source]#
高斯混合模型的变分贝叶斯估计。
该类允许推断高斯混合分布参数的近似后验分布。有效分量数量可以从数据中推断。
该类为权重分布实现了两种先验:一种是使用狄利克雷分布的有限混合模型,另一种是使用狄利克雷过程的无限混合模型。实际上,狄利克雷过程推断算法是近似的,并使用具有固定最大分量数的截断分布(称为Stick-breaking表示)。实际使用的分量数几乎总是取决于数据。
版本 0.18 新增。
更多信息请参阅用户指南。
- 参数:
- n_components整型, 默认为 1
混合分量的数量。根据数据和
weight_concentration_prior
的值,模型可以通过将某些分量weights_
设置为非常接近零的值来决定不使用所有分量。因此,有效分量数会小于n_components。- covariance_type{‘full’, ‘tied’, ‘diag’, ‘spherical’}, 默认为 ‘full’
描述要使用的协方差参数类型的字符串。必须是以下之一:
‘full’ (每个分量都有自己的通用协方差矩阵),
‘tied’ (所有分量共享相同的通用协方差矩阵),
‘diag’ (每个分量都有自己的对角协方差矩阵),
‘spherical’ (每个分量都有自己的单一方差)。
- tol浮点型, 默认为 1e-3
收敛阈值。当似然(模型相对于训练数据)的下限平均增益低于此阈值时,EM迭代将停止。
- reg_covar浮点型, 默认为 1e-6
添加到协方差对角线的非负正则化。确保协方差矩阵都是正的。
- max_iter整型, 默认为 100
要执行的EM迭代次数。
- n_init整型, 默认为 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++’作为初始化方法。- weight_concentration_prior_type{‘dirichlet_process’, ‘dirichlet_distribution’}, 默认为 ‘dirichlet_process’
描述权重集中先验类型的字符串。
- weight_concentration_prior浮点型或 None, 默认为 None
权重分布(狄利克雷)上每个分量的狄利克雷集中度。这在文献中通常称为伽马。较高的集中度会将更多的质量放在中心,从而导致更多的分量活跃;而较低的集中度参数会将更多的质量放在混合权重单纯形的边缘。参数值必须大于0。如果为None,则设置为
1. / n_components
。- mean_precision_prior浮点型或 None, 默认为 None
均值分布(高斯)上的精度先验。控制均值可以放置的范围。较大的值会将聚类均值集中在
mean_prior
附近。参数值必须大于0。如果为None,则设置为1。- mean_prior类数组,形状 (n_features,), 默认为 None
均值分布(高斯)上的先验。如果为None,则设置为X的均值。
- degrees_of_freedom_prior浮点型或 None, 默认为 None
协方差分布(Wishart)上的自由度数的先验。如果为None,则设置为
n_features
。- covariance_prior浮点型或类数组, 默认为 None
协方差分布(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整型, RandomState实例或 None, 默认为 None
控制用于初始化参数的方法(参阅
init_params
)的随机种子。此外,它还控制从拟合分布中生成随机样本(参阅sample
方法)。传入一个整数可以在多次函数调用中获得可重现的输出。参阅术语表。- warm_start布尔型, 默认为 False
如果‘warm_start’为True,则上次拟合的解决方案将用作下一次fit()调用的初始化。当在类似问题上多次调用fit时,这可以加快收敛速度。参阅术语表。
- verbose整型, 默认为 0
启用详细输出。如果为1,则打印当前初始化和每个迭代步骤。如果大于1,则还会打印对数概率和每个步骤所需的时间。
- verbose_interval整型, 默认为 10
下次打印前完成的迭代次数。
- 属性:
- weights_类数组,形状 (n_components,)
每个混合分量的权重。
- means_类数组,形状 (n_components, n_features)
每个混合分量的均值。
- 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_类数组
混合中每个分量的精度矩阵。精度矩阵是协方差矩阵的逆。协方差矩阵是对称正定的,因此高斯混合可以通过精度矩阵等效地参数化。存储精度矩阵而非协方差矩阵,可以在测试时更有效地计算新样本的对数似然。其形状取决于
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_类数组
每个混合分量精度矩阵的乔利斯基分解。精度矩阵是协方差矩阵的逆。协方差矩阵是对称正定的,因此高斯混合可以通过精度矩阵等效地参数化。存储精度矩阵而非协方差矩阵,可以在测试时更有效地计算新样本的对数似然。其形状取决于
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_布尔型
当最佳拟合推断达到收敛时为True,否则为False。
- n_iter_整型
最佳拟合推断达到收敛所使用的步数。
- lower_bound_浮点型
最佳拟合推断的模型证据(训练数据)的下限值。
- lower_bounds_类数组,形状 (
n_iter_
,) 最佳拟合推断的每次迭代中模型证据的下限值列表。
- weight_concentration_prior_元组或浮点型
权重分布(狄利克雷)上每个分量的狄利克雷集中度。类型取决于
weight_concentration_prior_type
。(float, float) if 'dirichlet_process' (Beta parameters), float if 'dirichlet_distribution' (Dirichlet parameters).
较高的集中度会将更多的质量放在中心,从而导致更多的分量活跃;而较低的集中度参数会将更多的质量放在单纯形的边缘。
- weight_concentration_类数组,形状 (n_components,)
权重分布(狄利克雷)上每个分量的狄利克雷集中度。
- mean_precision_prior_浮点型
均值分布(高斯)上的精度先验。控制均值可以放置的范围。较大的值会将聚类均值集中在
mean_prior
附近。如果mean_precision_prior设置为None,则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_整型
拟合期间看到的特征数量。
版本 0.24 新增。
- feature_names_in_ndarray,形状 (
n_features_in_
,) 拟合期间看到的特征名称。仅当
X
的所有特征名称都是字符串时才定义。版本 1.0 新增。
另请参阅
GaussianMixture
使用EM算法拟合有限高斯混合。
参考文献
示例
>>> 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)[source]#
使用EM算法估计模型参数。
该方法对模型拟合
n_init
次,并设置模型具有最大似然或下限的参数。在每次尝试中,该方法在E步和M步之间迭代max_iter
次,直到似然或下限的变化小于tol
,否则会引发ConvergenceWarning
。如果warm_start
为True
,则n_init
将被忽略,并且在首次调用时执行一次初始化。在随后的调用中,训练将从上次停止的地方继续。- 参数:
- X类数组,形状 (n_samples, n_features)
n_features维数据点的列表。每行对应一个数据点。
- y忽略
未使用,按照约定为API一致性而存在。
- 返回:
- self对象
拟合的混合模型。
- fit_predict(X, y=None)[source]#
使用X估计模型参数并预测X的标签。
该方法对模型拟合n_init次,并设置模型具有最大似然或下限的参数。在每次尝试中,该方法在E步和M步之间迭代
max_iter
次,直到似然或下限的变化小于tol
,否则会引发ConvergenceWarning
。拟合后,它会预测输入数据点的最可能标签。版本 0.20 新增。
- 参数:
- X类数组,形状 (n_samples, n_features)
n_features维数据点的列表。每行对应一个数据点。
- y忽略
未使用,按照约定为API一致性而存在。
- 返回:
- labels数组,形状 (n_samples,)
分量标签。
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查阅用户指南,了解路由机制的工作原理。
- 返回:
- routingMetadataRequest
封装路由信息的
MetadataRequest
。
- get_params(deep=True)[source]#
获取此估计器的参数。
- 参数:
- deep布尔型, 默认为 True
如果为True,将返回此估计器及其包含的作为估计器的子对象的参数。
- 返回:
- params字典
参数名称及其对应值的映射。
- predict(X)[source]#
使用训练好的模型预测X中数据样本的标签。
- 参数:
- X类数组,形状 (n_samples, n_features)
n_features维数据点的列表。每行对应一个数据点。
- 返回:
- labels数组,形状 (n_samples,)
分量标签。
- predict_proba(X)[source]#
评估每个样本的分量密度。
- 参数:
- X类数组,形状 (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维数据点的列表。每行对应一个数据点。
- y忽略
未使用,按照约定为API一致性而存在。
- 返回:
- log_likelihood浮点型
高斯混合模型下
X
的对数似然。