模型报错
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之前的部分,否则会报错。