HMMlearn小结

文章讲述了在使用hmmlearn库时遇到的模型报错问题,通过将模型类型从MultinomialHMM更改为CategoricalHMM可以解决。同时,详细介绍了HMM模型的参数含义,如n_components,startprob_prior等,并提到了预测部分的模型参数调整,包括score方法和decode方法的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模型报错

model=hmm.MultinomialHMM(n_components=n_states)

会产生报错
更改为

model=hmm.CategoricalHMM(n_components=n_states)

即可

模型参数意义

此处参考

https://blog.youkuaiyun.com/Lilo_/article/details/127657304

hmmlearn.hmm.MultinomialHMM(
    n_components=1,   # 隐藏状态的种类
    # 以下参数用于模型训练:
    n_trials=None, 
    startprob_prior=1.0, # 由模型本身对初始概率分布随机初始化
    transmat_prior=1.0,  # 由模型本身对状态转移概率随机初始化
    algorithm='viterbi',  # 解码方法
    n_iter=10, # 训练迭代的次数
    tol=0.01,  # 训练结束的阈值
    verbose=False,  # 训练过程是否可见
    params='ste',  # 训练过程中更新的参数,默认为所有的参数
    init_params='ste',  # 由模型进行随机初始化的参数,默认为所有的参数
    implementation='log')  # 选择对数/缩放进行前向或后向算法

s: 初始概率分布
t: 状态转移概率
e: 发射概率

预测部分模型参数调整

print(model.score(seen))
logprob,box=model.decode(seen,algorithm="viterbi")
print("The ball picked:",",".join('%s' %id for id in map(lambda x:np.array(observations)[x],seen)))
print("The hidden box",",".join('%s' %id for id in map(lambda x:np.array(states)[x],box)))

两个print都需要加上map之前的部分,否则会报错。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值