中餐馆过程伪代码及python实现

这篇博客探讨了中餐馆过程的两种采样方式,包括直接从联合分布中采样和使用吉布斯采样。介绍了采样算法的参数如餐厅总人数N、采样次数T和Dirichlet参数α,并提到了验证采样算法正确性的方法,即比较被占桌子个数K的期望和概率。同时,提到了参考来源徐亦达的中国餐馆过程演示。
摘要由CSDN通过智能技术生成

#中餐馆两种采样方式:
已知条件概率
这里写图片描述
##**算法1:**直接从联合分布中采样

N:餐厅的总人数
T:样本总数(采样的次数)
$\alpha $:Dirichlet参数
这里写图片描述

代码1:
#算法1:直接从联合分布里采样,根据中餐馆条件概率采样,先得到z1,再根据z1得到z2.。。。。最后得到联合概率样本
#N表示中餐馆有10个人,alpha = 3表示dirichlet参数,T=50表示样本数,即迭代多少次
#verbose表示详细信息,verbose=FALSE,意思就是设置运行的时候不显示详细信息
#给定初始Z[0]=1,其他初始化为0
import numpy as np
def Draw_CRP_Direct_Sample(N = 10, alpha = 3, T = 50, VERBOSE = False):
    Z_table = np.zeros((T,N))#(T,N)用0填充的数组,数值表示每个人坐的桌子的编号
    for t in range(T):
        Z = np.zeros(N,dtype=int)#包含N个人的样本
        for i in range(N):
            if i == 0:
                Z[i] = 1#初始化Z[0] = 1,即第一个人坐的的类别
            else:
                if VERBOSE:
                    print('初始Z=',Z)#一个样本
                unique, counts = np.unique(Z, return_counts=True)
                #unique返回样本Z中去重之后的主题编号(从小到大排序),counts计数(主题权重)返回每个主题的个数
                #对于一维数组或者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值