zoukankan      html  css  js  c++  java
  • 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个组分的初始均值。这个在我们下一篇实战中细说。

  • 相关阅读:
    68
    56
    Django manager 命令笔记
    Django 执行 manage 命令方式
    Django 连接 Mysql (8.0.16) 失败
    Python django 安装 mysqlclient 失败
    H.264 SODB RBSP EBSP的区别
    FFmpeg—— Bitstream Filters 作用
    MySQL 远程连接问题 (Windows Server)
    MySQL 笔记
  • 原文地址:https://www.cnblogs.com/dahu-daqing/p/9456137.html
Copyright © 2011-2022 走看看