六、GaussianMixture
GaussianMixture
是scikit-learn
给出的混合高斯模型。其原型为class sklearn.mixture.GaussianMixture(n_components=1, covariance_type='full',
tol=0.001, reg_covar=1e-06, max_iter=100, n_init=1, init_params='kmeans',
weights_init=None, means_init=None, precisions_init=None, random_state=None,
warm_start=False, verbose=0, verbose_interval=10)
n_components
:一个整数,指定分模型的数量,默认为1。covariance_type
:一个字符串,指定协方差的类型。必须为下列值之一:'spherical'
:球型,每个分模型的协方差矩阵都是各自的标量值。'tied'
:结点型,所有的分模型都共享一个协方差矩阵。'diag'
:对角型,每个分模型的协方差矩阵都是各自的对角矩阵'full'
:全型,每个分模型都有自己的协方差矩阵。
tol
:一个浮点数,用于指定收敛的阈值。EM
迭代算法中,当对数似然函数平均增益低于此阈值时,迭代停止。reg_covar
:一个浮点数,添加到协方差矩阵对角线上元素,确保所有的协方差都是正数。max_iter
:一个整数,指定EM
算法迭代的次数。n_init
:一个整数,用于指定初始化次数。即算法会运行多轮,只有表现最好的哪个结果作为最终的结果。init_params
:一个字符串,可以为'kmeans'/'random'
,用于指定初始化权重的策略。'kmeans'
:通过kmeans
算法初始化。'random'
:随机初始化。
weights-init
:一个序列,形状为(n_components,)
,指定初始化的权重。如果提供该参数,则不会使用
init_params
来初始化权重。means_init
:一个数组,形状为(n_components,n_features)
,指定了初始化的均值。如果为
None
,则使用init_params
来初始化均值。precision_init
:用户提供的初始precisions
(协方差矩阵的逆矩阵)。如果为None
,则使用init_params
来初始化。根据
covariance_type
的不同,该参数值的形状为不同。'spherical'
:形状为[n_components,]
。'tied'
:形状为[n_features,n_features]
。'diag'
:形状为[n_components,n_features]
。'full'
:形状为[n_components,n_features,n_featuress]
。
random_state
:指定随机数种子。warm_start
:一个布尔值。如果为True
,则上一次训练的结果将作为本次训练的开始条件。此时忽略n_init
,并且只有一次初始化过程发生。verbose
:一个整数,指定日志打印级别。verbose_interval
:一个整数,指定输出日志的间隔。
属性:
weights_
:一个形状为(n_components,)
的数组,表示每个分模型的权重。means_
:一个形状为(n_components, n_features)
的数组,表示每个分模型的均值 。covariances_
:一个数组,表示每个分模型的方差 。数组的形状根据方差类型有所不同。'spherical'
:形状为[n_components,]
。'tied'
:形状为[n_features,n_features]
。'diag'
:形状为[n_components,n_features]
。'full'
:形状为[n_components,n_features,n_featuress]
。
precision_
:一个数组,表示精度矩阵(协方差矩阵的逆矩阵),与covariances_
形状相同。precisions_cholesky_
:一个数组,表示精度矩阵的Cholesky
分解。Cholesky
分解:如果 是对称正定矩阵,则存在一个对角元为正数的下三角矩阵 ,使得 成立。converged_
:一个布尔值。当训练过程收敛时,该值为True
;不收敛时,为False
。n_iter_
:一个整数,给出EM
算法收敛时的迭代步数。lower_bound_
:一个浮点数,给出了训练集的对数似然函数的下界。
方法:
fit(X[, y])
:训练模型。predict(X)
:预测样本所属的簇标记。fit_predict(X[, y])
:训练模型并执行聚类,返回每个样本所属的簇标记。predict_proba(X)
:预测样本所属各个簇的后验概率。sample([n_samples])
:根据模型来随机生成一组样本。n_samples
指定待生成样本的数量。score(X[, y])
:计算模型在样本总体上的对数似然函数。score_samples(X)
:给出每个样本的对数似然函数。aic(X)
:给出样本集的AKaike
信息准则。bic(X)
:给出样本集的贝叶斯信息准则。
AIC
和BIC
都是用于评估模型好坏的准则,用于衡量模型的复杂度和模型的精度。AIC:Akaike Information Criterion
准则的目标是:选取AIC
最小的模型。其中
AIC
定义为:, 为模型的参数个数, 为模型的似然函数。- 当模型之间的预测能力存在较大差异时,似然函数占主导地位。
- 当模型之间的预测能力差异不大时,模型复杂度占主导地位。
BIC:Bayesian Information Criterion
准则的目标是:选取BIC
最小的模型。其中
BIC
定义为:, 为模型的参数个数, 为模型的似然函数, 为训练样本的数量。BIC
认为增加参数的数量也会增加模型复杂度。并不是超参数的数量,而是训练参数的数量。