统计学习方法第10章隐马尔可夫模型的概率计算方法的前向算法

统计学习方法第10章隐马尔可夫模型的概率计算方法的前向算法
from numpy import *

Q=[1,2,3]
V=['红','白']
A=mat([[0.5,0.2,0.3],[0.3,0.5,0.2],[0.2,0.3,0.5]])
B=mat([[0.5,0.5],[0.4,0.6],[0.7,0.3]])
Pi=mat([0.2,0.4,0.4])
O=['红','白','红']
m=len(O)
alpha=multiply(Pi,B[:,V.index(O[0])].T)  #找到输出的值对应于B矩阵中的那一列来输出观察序列
#print(alpha)
for i in range(1,m):   #因为根据初始状态计算了一次观测这里遍历观测序列的长度减去一
    alpha=multiply(alpha*A,B[:,V.index(O[i])].T)  #对应书上的公式10.16
print(sum(alpha))
输出:
0.130218
made by zcl at CUMT
I know I can because I have a heart that beats

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
由于这是一个广泛的主题,无法提供完整的笔记和实现。但是,我可以提供一些基本的概念和实现建议。 概率图模型是一种用于建模和推理不确定性的框架。它包括两种基本类型的模型:贝叶斯网络和马尔可夫随机场。这些模型都涉及到分布的表示和推断,使用概率论的方法来处理不完全或不准确的信息。 对于贝叶斯网络,我们可以使用条件概率表或结构化参数化模型来表示变量之间的关系。对于马尔可夫随机场,我们可以使用势函数来表示变量之间的关系。 在python中,有许多库可以用于概率图模型的表示和推断。其中最常用的是pgmpy,pomegranate和pyro。这些库提供了各种数据结构和算法,允许我们轻松地创建和操作概率图模型。 如,以下是使用pgmpy创建简单贝叶斯网络的示: ``` from pgmpy.models import BayesianModel from pgmpy.factors.discrete import TabularCPD model = BayesianModel([('A', 'B'), ('C', 'B')]) cpd_A = TabularCPD(variable='A', variable_card=2, values=[[0.6, 0.4]]) cpd_C = TabularCPD(variable='C', variable_card=2, values=[[0.7, 0.3]]) cpd_B = TabularCPD(variable='B', variable_card=2, values=[[0.3, 0.8, 0.4, 0.9], [0.7, 0.2, 0.6, 0.1]], evidence=['A', 'C'], evidence_card=[2, 2]) model.add_cpds(cpd_A, cpd_C, cpd_B) ``` 在这个子中,我们创建了一个包含三个变量的贝叶斯网络。变量A和C是末梢节点,而变量B是中间节点。我们使用TabularCPD类创建条件概率表,并使用add_cpds方法将它们添加到模型中。 一旦我们有了模型,我们就可以使用它来进行推断。如,我们可以使用VariableElimination类计给定某些变量的条件概率: ``` from pgmpy.inference import VariableElimination inference = VariableElimination(model) q = inference.query(['A', 'B'], evidence={'C': 0}) print(q) ``` 在这个子中,我们创建了一个VariableElimination对象来进行推断。我们使用query方法来计A和B的条件概率,给定C=0的证据。我们可以看到输出结果是一个表示概率分布的Table类。 类似地,我们可以使用其他库来表示和推断其他类型的概率图模型。这些库通常具有相似的API和数据结构,因此学习一个库通常可以轻松地转换到另一个库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值