没有合适的资源?快使用搜索试试~ 我知道了~
李航《统计学习方法》(第二版)习题10.1python实现
8 下载量 24 浏览量
2020-12-21
01:02:27
上传
评论
收藏 38KB PDF 举报
温馨提示
试读
2页
题目要求使用后向算法计算,程序中分别使用了前向算法和后向算法,最后得到的结果是一样的。 前向算法和后向算法: 输入是: A: 状态转移概率矩阵 B: 观测概率矩阵 p_i: 初始状态概率向量 O: 观测序列 T: 观测序列的个数 N: 状态序列的个数 输出是: P: 此模型参数下,得到此观测序列的概率 前向算法: def fore_algorithm(A, B, p_i, O, T, N): alpha = np.zeros((T, N)) o = np.zeros(T, np.int) for i in range(T): if O[i]
资源详情
资源评论
资源推荐
李航《统计学习方法》(第二版)习题李航《统计学习方法》(第二版)习题10.1python实现实现
题目要求使用后向算法计算,程序中分别使用了前向算法和后向算法,最后得到的结果是一样的。
前向算法和后向算法:前向算法和后向算法:
输入是:
A: 状态转移概率矩阵
B: 观测概率矩阵
p_i: 初始状态概率向量
O: 观测序列
T: 观测序列的个数
N: 状态序列的个数
输出是:
P: 此模型参数下,得到此观测序列的概率
前向算法:
def fore_algorithm(A, B, p_i, O, T, N):
alpha = np.zeros((T, N))
o = np.zeros(T, np.int)
for i in range(T):
if O[i] == '白':
o[i] = 1
else:
o[i] = 0
for i in range(N):
h = o[0] alpha[0][i] = p_i[i] * B[i][h]
for t in range(T-1):
h = o[t+1] for i in range(N):
a = 0
for j in range(N):
a += (alpha[t][j] * A[j][i])
alpha[t+1][i] = a * B[i][h]
P = 0
for i in range(N):
P += alpha[T-1][i] return P
后向算法:
def back_algorithm(A, B, p_i, O, T, N):
P = 0
o = np.zeros(T, np.int)
beta = np.ones((T, N))
for i in range(T):
if O[i] == '白':
o[i] = 1
else:
o[i] = 0
for t in range(T-1):
t = T - t - 2
h = o[t + 1] h = int(h)
for i in range(N):
beta[t][i] = 0
for j in range(N):
beta[t][i] += A[i][j] * B[j][h] * beta[t+1][j]
for i in range(N):
h = o[0] h = int(h)
P += p_i[i] * B[i][h] * beta[0][i] return P
根据题目的要求,已知条件如下:
T = 4
weixin_38651273
- 粉丝: 0
- 资源: 969
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0