机器学习——HMM模型

HMM模型

隐马尔可夫模型(HHM)是统计模型,用来描述一个含有隐含未知参数的马尔可夫过程
其难点是从可观察的参数中确定该过程的隐含参数,然后利用这些参数来作进一步分析,例如模式识别
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

马尔可夫链

状态空间中从一个状态到另一个状态转换的随机过程
在这里插入图片描述
在这里插入图片描述

HMM模型基础

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

前向算法评估观察序列概率

在这里插入图片描述

后向算法评估观察序列概率

在这里插入图片描述
在这里插入图片描述

维特比算法解码隐藏状态序列

在这里插入图片描述
在这里插入图片描述

鲍姆-韦尔奇算法

在这里插入图片描述
在这里插入图片描述

HMM模型API介绍

import numpy as np
from hmmlearn import hmm
# 设定隐藏状态的集合
states = ["box 1", "box 2", "box3"]
n_states = len(states)

# 设定观察状态的集合
observations = ["red", "white"]
n_observations = len(observations)

# 设定初始状态分布
start_probability = np.array([0.2, 0.4, 0.4])

# 设定状态转移概率分布矩阵
transition_probability = np.array([
  [0.5, 0.2, 0.3],
  [0.3, 0.5, 0.2],
  [0.2, 0.3, 0.5]
])

# 设定观测状态概率矩阵
emission_probability = np.array([
  [0.5, 0.5],
  [0.4, 0.6],
  [0.7, 0.3]
])
# 设定模型参数
model = hmm.MultinomialHMM(n_components=n_states)
# 设定初始状态分布
model.startprob_ = start_probability
# 设定状态转移概率矩阵
model.transmat_ = transition_probability
# 设定观测状态概率矩阵
model.emissionprob_ = emission_probability
# 设定观测序列
seen = np.array([[0, 1, 0]]).T
print("球的观测顺序为:\n", ",".join(map(lambda x: observations[x], seen.flatten())))

球的观测顺序为:
red,white,red

# 维特比 - 模型训练
box = model.predict(seen)
print("盒子最可能的隐藏状态顺序为:\n", ",".join(map(lambda x: states[x], box)))

盒子最可能的隐藏状态顺序为:
box3,box3,box3

# 观测序列的概率的问题
model.score(seen)

-2.038545309915233

import math

math.exp(-2.038545309915233)

0.13021800000000003

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醋酸洋红就是我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值