• sklearn GMM模型介绍


    参考  SKlearn 库 EM 算法混合高斯模型参数说明及代码实现   和   sklearn.mixture.GaussianMixture

    以前的推导内容:    GMM 与 EM 算法

    记录下常用的参数,以及函数。

    参数说明

    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)

    1. n_components: 混合高斯模型个数,默认为 1 
    2. covariance_type: 协方差类型,包括 {‘full’,‘tied’, ‘diag’, ‘spherical’} 四种,full 指每个分量有各自不同的标准协方差矩阵,完全协方差矩阵(元素都不为零), tied 指所有分量有相同的标准协方差矩阵(HMM 会用到),diag 指每个分量有各自不同对角协方差矩阵(非对角为零,对角不为零), spherical 指每个分量有各自不同的简单协方差矩阵,球面协方差矩阵(非对角为零,对角完全相同,球面特性),默认‘full’ 完全协方差矩阵 

    3. tol:EM 迭代停止阈值,默认为 1e-3. 
    4. reg_covar: 协方差对角非负正则化,保证协方差矩阵均为正,默认为 0 
    5. max_iter: 最大迭代次数,默认 100 
    6. n_init: 初始化次数,用于产生最佳初始参数,默认为 1 
    7. init_params: {‘kmeans’, ‘random’}, defaults to ‘kmeans’. 初始化参数实现方式,默认用 kmeans 实现,也可以选择随机产生 
    8. weights_init: 各组成模型的先验权重,可以自己设,默认按照 7 产生 
    9. means_init: 初始化均值,同 8 
    10. precisions_init: 初始化精确度(模型个数,特征个数),默认按照 7 实现 
    11. random_state : 随机数发生器 
    12. warm_start : 若为 True,则 fit()调用会以上一次 fit()的结果作为初始化参数,适合相同问题多次 fit 的情况,能加速收敛,默认为 False。 
    13. verbose : 使能迭代信息显示,默认为 0,可以为 1 或者大于 1(显示的信息不同) 
    14. verbose_interval : 与 13 挂钩,若使能迭代信息显示,设置多少次迭代后显示信息,默认 10 次。

    函数:

    aic(X) Akaike information criterion for the current model on the input X.          输入 X 上当前模型的 aic(X)Akaike 信息标准。
    bic(X) Bayesian information criterion for the current model on the input X.         输入 X 上当前模型的 bic(X)贝叶斯信息准则。
    fit(X[, y]) Estimate model parameters with the EM algorithm.              fit(X [,y])使用 EM 算法估算模型参数。
    get_params([deep]) Get parameters for this estimator.                get_params([deep])获取此估算器的参数。
    predict(X) Predict the labels for the data samples in X using trained model.        预测(X)使用训练模型预测 X 中数据样本的标签。
    predict_proba(X) Predict posterior probability of each component given the data.      predict_proba(X)预测给定数据的每个组件的后验概率。
    sample([n_samples]) Generate random samples from the fitted Gaussian distribution.    sample([n_samples])从拟合的高斯分布生成随机样本。
    score(X[, y]) Compute the per-sample average log-likelihood of the given data X.    得分(X [,y])计算给定数据 X 的每样本平均对数似然。
    score_samples(X) Compute the weighted log probabilities for each sample.      score_samples(X)计算每个样本的加权对数概率。
    set_params(**params) Set the parameters of this estimator.              set_params(** params)设置此估算器的参数。

    最主要的步骤是fit,然后内部在用em算法进行迭代求参数了。

    score_samples(x) 返回加权对数概率,所以指数形式,就是gmm模型给出的概率。

    predict_proba() 给出每个gmm的子高斯模型的概率,类似这种形式:

    [[1.23749644e-06 1.95769562e-15 9.99998763e-01 5.29319585e-14]
     [2.22219085e-35 1.06858732e-17 5.83110038e-16 1.00000000e+00]
     [1.35866699e-42 1.85132861e-23 6.24590778e-19 1.00000000e+00]...

    这是个4个组分的gmm,已经红色标注了,这是概率最高的,属于对应组分的概率最大

    predict ()   预测是哪个组分的,

    用上面的例子,得到的结果就是: [2 3 3 ...]  因为是4分类,0123

    常用的也就这些了,sklearn的框架要比自己写的好用很多,虽然能够推导出公式,但是代码不一定写的出来。。。

    最后分享一个关于协方差类型的官网例子:  GMM covariances

    以此为模板,我们只需要把数据的输入形式搞对应了,就可以做很多事情。

    值得一提的是,gmm需要初始化,我们上一篇学习的kmeans就可以拿来做gmm的初始化,他的 k个 质心坐标,可以用来作为gmm  k个组分的初始均值。这个在我们下一篇实战中细说。

  • 相关阅读:
    php json_encode怪问题
    给phpcms v9添加热门搜索关键词
    magento 1.6 后台无法登录解决办法
    08 baidu QA
    java exception
    java thread / process / thread runnable / thread sleep / thread run
    java reflect
    db sysbase
    内存单元
    分段的方式来管理内存
  • 原文地址:https://www.cnblogs.com/dahu-daqing/p/9456137.html
Copyright © 2020-2023  润新知