首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中应用Viterbi算法

如何在Python中应用Viterbi算法
EN

Stack Overflow用户
提问于 2016-03-01 06:38:03
回答 1查看 3.4K关注 0票数 1

我是Python的初学者。目前我正在学习维特比算法。我在维基中找到了代码,我想用Python实现它。

我正在使用在线Python来执行算法。然而,我遇到了一个问题。

在我将代码复制到在线Python站点后,它将显示

‘’sh 4.3美元python main.py‘

这是否意味着我没有任何输出?如何将数据插入到在线Python站点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-01 06:47:00

要在网上尝试Viterbi算法,您应该粘贴以下代码

代码语言:javascript
复制
def viterbi(obs, states, start_p, trans_p, emit_p):
V=[{}]
    for i in states:
        V[0][i]=start_p[i]*emit_p[i][obs[0]]
    # Run Viterbi when t > 0
    for t in range(1, len(obs)):
        V.append({})
        for y in states:
            (prob, state) = max((V[t-1][y0] * trans_p[y0][y] * emit_p[y][obs[t]], y0) for y0 in states)
            V[t][y] = prob
        for i in dptable(V):
            print (i)
        opt=[]
        for j in V:
            for x,y in j.items():
                if j[x]==max(j.values()):
                    opt.append(x)
    #the highest probability
    h=max(V[-1].values())
    print ('The steps of states are '+' '.join(opt)+' with highest probability of %s'%h)
    #it prints a table of steps from dictionary

def dptable(V):
    yield " ".join(("%10d" % i) for i in range(len(V)))
    for y in V[0]:
        yield "%.7s: " % y+" ".join("%.7s" % ("%f" % v[y]) for v in V)

states = ('Healthy', 'Fever')
observations = ('normal', 'cold', 'dizzy')
start_probability = {'Healthy': 0.6, 'Fever': 0.4}
transition_probability = {
'Healthy' : {'Healthy': 0.7, 'Fever': 0.3},
'Fever' : {'Healthy': 0.4, 'Fever': 0.6}
}
emission_probability = {
'Healthy' : {'normal': 0.5, 'cold': 0.4, 'dizzy': 0.1},
'Fever' : {'normal': 0.1, 'cold': 0.3, 'dizzy': 0.6}
}

viterbi(observations,
                   states,
                   start_probability,
                   transition_probability,
                   emission_probability)

到联机爱得并在命令行python main.py中打印(如果文件名为main.py)。或按编辑器上方的Execute按钮。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35716235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档