参考  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个组分的初始均值。这个在我们下一篇实战中细说。

sklearn GMM模型介绍的更多相关文章

  1. Python 3 利用 Dlib 19.7 和 sklearn机器学习模型 实现人脸微笑检测

    0.引言  利用机器学习的方法训练微笑检测模型,给一张人脸照片,判断是否微笑:   使用的数据集中69张没笑脸,65张有笑脸,训练结果识别精度在95%附近: 效果: 图1 示例效果 工程利用pytho ...

  2. 吴裕雄 python 机器学习——混合高斯聚类GMM模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import mixture from sklearn.metrics ...

  3. IO模型介绍

    先理解几个问题: (1)为什么读取文件的时候,需要用户进程通过系统调用内核完成(系统不能自己调用内核)什么是用户态和内核态?为什么要区分内核态和用户态呢? 在 CPU 的所有指令中,有些指令是非常危险 ...

  4. 模型介绍之FastText

    模型介绍一: 1. FastText原理及实践 前言----来源&特点 fastText是Facebook于2016年开源的一个词向量计算和文本分类工具,在学术上并没有太大创新.但是它的优点也 ...

  5. python 全栈开发,Day44(IO模型介绍,阻塞IO,非阻塞IO,多路复用IO,异步IO,IO模型比较分析,selectors模块,垃圾回收机制)

    昨日内容回顾 协程实际上是一个线程,执行了多个任务,遇到IO就切换 切换,可以使用yield,greenlet 遇到IO gevent: 检测到IO,能够使用greenlet实现自动切换,规避了IO阻 ...

  6. {python之IO多路复用} IO模型介绍 阻塞IO(blocking IO) 非阻塞IO(non-blocking IO) 多路复用IO(IO multiplexing) 异步IO(Asynchronous I/O) IO模型比较分析 selectors模块

    python之IO多路复用 阅读目录 一 IO模型介绍 二 阻塞IO(blocking IO) 三 非阻塞IO(non-blocking IO) 四 多路复用IO(IO multiplexing) 五 ...

  7. (zhuan) 深度学习全网最全学习资料汇总之模型介绍篇

    This blog from : http://weibo.com/ttarticle/p/show?id=2309351000224077630868614681&u=5070353058& ...

  8. 深入理解 Java 内存模型(一)- 内存模型介绍

    深入理解 Java 内存模型(一)- 内存模型介绍 深入理解 Java 内存模型(二)- happens-before 规则 深入理解 Java 内存模型(三)- volatile 语义 深入理解 J ...

  9. OSI七层网络模型与TCP/IP四层模型介绍

    目录 OSI七层网络模型与TCP/IP四层模型介绍 1.OSI七层网络模型介绍 2.TCP/IP四层网络模型介绍 3.各层对应的协议 4.OSI七层和TCP/IP四层的区别 5.交换机工作在OSI的哪 ...

随机推荐

  1. MySQL存储引擎 - Myisam和Innodb

    Mysql有两种存储引擎:InnoDB与Myisam,下表是两种引擎的简单对比   MyISAM InnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件.第一个 文件的名字以表的名字开始 ...

  2. 使用VBA批量转换Excel格式,由.xls转换成.xlsx

    问题分析: Excel2007以前的格式是.xls,之后的格式是.xlsx.打开单独的一个Excel文档,使用“另存为”功能,可以很轻松的转换格式.但是面对几百个Excel表这样就太累了,搜索很久,也 ...

  3. 【题解】 [SCOI2010]连续攻击游戏 (二分图匹配)

    原题目戳我 Solution: 方法很巧妙,我们把每个装备的属性 与 装备编号连起来 从1-10000跑二分图,如果出现断层,就退出,输出答案就好. memset清理bool快一点,int洛谷上超时了 ...

  4. 【poj3718】 Facer's Chocolate Dream

    http://poj.org/problem?id=3718 (题目链接) 题意 给出${2}$个长度为${n}$的${01}$串,问是否存在${m}$个长度为${n}$的有三个位置为${1}$的$0 ...

  5. 前端学习 -- Css -- 文本标签

    em和strong - 这两个标签都表示一个强调的内容, em主要表示语气上的强调,em在浏览器中默认使用斜体显示 strong表示强调的内容,比em更强烈,默认使用粗体显示 <!DOCTYPE ...

  6. EOJ #276

    题面 感觉是个套路题,不是特别难(然而卡常 直接做不可做,改成算每个数的贡献 暴力的想法是容斥,即记录每个数在每行里的出现情况,从总方案中扣掉每一行都没选到这个数的方案,复杂度$O(n^3)$ 我们发 ...

  7. 使用Sql语句快速将数据表转换成实体类

    开发过程中经常需要根据数据表编写对应的实体类,下面是使用sql语句快速将数据表转换成对应实体类的代码,使用时只需要将第一行'TableName'引号里面的字母换成具体的表名称就行了: declare ...

  8. HTML培训课程-------Day02(表格和框架)

    表格 在网页中表格是一种经常使用到得设计结构,就像表格的内容中可以包含任何的数据,如文字.图像.表单.超链接.表格等等,所有在HTML中可以使用的数据,都可以被设置在表格中,所以有关表格设置的标记与属 ...

  9. get请求中的url encode问题

    首先发表一下感慨,Python的requests模块确实太简便,省却了很多的转码等等等等的问题,但这也是缺点,对于我这种基础不好的同学来说让我少知道了许多本来应该知道的东西. url encode: ...

  10. 20181103 Nginx(布尔教育)

    nginx介绍 对标Apache服务器 目录介绍 conf 配置文件 html 网页文件 logs 日志文件 sbin 主要二进制程序 控制命令 ./nginx # 启动 nginx -t # 测试配 ...