LDA说的比较利索参考:https://segmentfault.com/a/1190000012215533

# -*- coding: utf-8 -*-
'''
Created on 2018年5月16日
@author: user
p:输入的概率分布,离散情况采用元素为概率值的数组表示
N:认为迭代N次马尔可夫链收敛
Nlmax:马尔可夫链收敛后又取的服从p分布的样本数
isMH:是否采用MH算法,默认为True
'''from __future__ import division
import matplotlib.pyplot as plt
import numpy as np
from array import arraydef mcmc(p,N=10000,Nlmax=10000,isMH=True):A = np.array([p for y in range(len(p))], dtype=np.float64) #第一步:构造转移概率矩阵X0 = np.random.randint(len(p))count = 0samplecount = 0L = array("d",[X0])l = array("d")while True:X = int(L[samplecount])#第二步:初始化x0cur = np.argmax(np.random.multinomial(1,A[X]))#第三步:采样候选样本count += 1if isMH:a = (p[cur]*A[cur][X])/(p[X]*A[X][cur])#第四步:计算是否满足马氏平稳条件alpha = min(a,1)else:alpha = p[cur]*A[cur][X]u = np.random.uniform(0,1) #第五步:生成阈值if u<alpha:#第六步:是否接受样本samplecount += 1L.append(cur)if count>N:l.append(cur)if len(l)>=Nlmax:breakelse:continueLa = np.frombuffer(L)la = np.frombuffer(l)return La,ladef count(q,n):L = array("d")l1 = array("d")l2 = array("d")for e in q:L.append(e)for e in range(n):l1.append(L.count(e))for e in l1:l2.append(e/sum(l1))return l1,l2if __name__ == '__main__':    p = np.array([0.6,0.3,0.1]) a = mcmc(p)[1]l1 = ['state%d'% x for x in range(len(p))]plt.pie(count(a,len(p))[0],labels=l1,labeldistance=0.3,autopct='%1.2f%%')plt.title("sampling")plt.show()

【LDA学习系列】M-H采样python代码相关推荐

  1. 【LDA学习系列】Gibbs采样python代码

    Gibbs采样算法流程:从已知分布采样,前提是预知条件分布 代码流程: 代码: # -*- coding: utf-8 -*- ''' Created on 2018年5月15日 @author: u ...

  2. 【LDA学习系列】Dirichlet分布python代码

    代码: # -*- coding: utf-8 -*- ''' Created on 2018年5月15日 @author: user @attention: dirichret distributi ...

  3. 【LDA学习系列】Beta分布Python代码

    代码: # -*- coding: utf-8 -*- ''' Created on 2018年5月15日 @author: user @attention: beta distribution '' ...

  4. 联邦学习non-iid用户数据采样python实现

    联邦学习non-iid用户数据采样python实现 问题描述 解决办法 问题描述 联邦学习non-iid用户数据采样 解决办法 直接上代码 import os from scipy.io import ...

  5. 视频教程-深度学习原理详解及Python代码实现-深度学习

    深度学习原理详解及Python代码实现 大学教授,美国归国博士.博士生导师:人工智能公司专家顾问:长期从事人工智能.物联网.大数据研究:已发表学术论文100多篇,授权发明专利10多项 白勇 ¥88.0 ...

  6. 基于深度学习的手势识别系统(Python代码,UI界面版)

    摘要:本文详细介绍基于深度学习的手势识别系统,在介绍手势识别算法原理的同时,给出了_P__y__t__h__o__n_的实现代码以及_P__y__Q__t_的UI界面.手势识别采用了基于MediaPi ...

  7. 数据挖掘学习——SOM网络聚类算法+python代码实现

    目录 1.SOM简述 2.SOM训练过程 (1)初始化 (2)采样(抽取样本点) (3)竞争 (4)合作和适应(更新权重值) (5)重复 3.python 代码实现 (1)初始化 (2)计算样本点和权 ...

  8. 【LDA学习系列】MCMC之Metropolis-Hastings采样算法python代码理解

    Metropolis-Hastings采样算法的流程: 代码一:有助于理解算法流程 # -*- coding: utf-8 -*- ''' Created on 2018年5月15日@author: ...

  9. 【LDA学习系列】神奇的Gama函数Python代码

    代码: # -*- coding: utf-8 -*- ''' Created on 2018年5月15日 @author: user @attention: gama function ''' im ...

最新文章

  1. 可怕!Facebook竟能识别出性工作者!你怎么看?
  2. Android启动界面优化技巧-Splash Screens的正确方式
  3. Python学习——常见的字符串匹配
  4. Python 实现简单的爬虫
  5. 事业编和公务员哪个好?
  6. DeleteDC、ReleaseDC、DeleteObject - [Daliy APIs]
  7. CS224N笔记——词向量表示
  8. 《中文版PHOTOSHOP.CS3完全自学教程》李金明.李金荣.彩色扫描版.pdf
  9. Ubuntu虚拟机中无法使用罗技鼠标滚轮功能
  10. 利用 0DAY 漏洞 CVE-2018-8174 获取windows系统 shell
  11. 怎么对网站ICP备案和公安备案流程
  12. bzoj2286: [Sdoi2011消耗战] 虚树构造
  13. 三种 Bitmap 之 Java BitSet
  14. 商用密码产品认证-密码机(概述)
  15. Windows 2008 R2 终端服务器授权安装配置
  16. wpf 如何让当前窗口隐藏
  17. Python调用腾讯API实现人脸检测
  18. 各大编辑器的常用快捷键
  19. 关于love2d引擎require导入C/C++编写的.dll/.so扩展库问题
  20. 基于Python(Django)+MySQL 实现(Web)SQL智能检测系统的设计与实现【100010694】

热门文章

  1. Netty详解(五):Netty TCP粘包 拆包
  2. Zookeeper分布式一致性原理(七):Curator客户端
  3. Java高并发编程:Copy-On-Write容器
  4. win2003服务器定时自动重启命令[计划任务]
  5. 20175316 盛茂淞 实验一 Java开发环境的熟悉
  6. 浅谈postMessage跨域通信与localStorage实现跨域共享
  7. Document 对象描述
  8. 【mmall】Guava框架
  9. 20170910校内训练
  10. [BZOJ] 1609: [Usaco2008 Feb]Eating Together麻烦的聚餐