馬爾科夫過程(Markov Process,MP)

馬爾科夫過程描述的是空間狀態(tài)經(jīng)過一個狀態(tài)到另一個狀態(tài)轉(zhuǎn)換的隨機過程。該過程要求具備“無記憶”性質(zhì),也就是下一狀態(tài)的概率分布只與當前的狀態(tài)有關(guān),再時間序列中其他前面的事件無關(guān)。

馬爾科夫隨機序列由元組<S,P>表示。 S 代表有限狀態(tài)集,P 是狀態(tài)轉(zhuǎn)移概率矩陣。公式P_{ss^{'}}=p[S_{t+1}=s^{'}|S_t=s],描述了一個狀態(tài)轉(zhuǎn)移到另一個狀態(tài)發(fā)生的概率。

本文主要以代碼描述MP過程。若要詳細看圖文例子,可參考知乎https://zhuanlan.zhihu.com/p/35124726

import numpy as np
state = ["sleep","icecream","run"]
transitionName =[["ss","si","sr"],["is","ii","ir"],["rs","ri","rr"]]
transitionMatrix =[[0.2,0.6,0.2],[0.1,0.6,0.3],[0.2,0.7,0.1]]

def activity_forecast(days):
    activitytoday= "sleep"
    print("start state",activitytoday)
    activityList = [activitytoday]
    i =0
    prob =1
    while i < days :
        if activitytoday =="sleep":
            change = np.random.choice(transitionName[0],replace=True,p=transitionMatrix[0])
            if change =='ss':
                prob *= transitionMatrix[0][0]
                activityList.append("sleep")

            elif change == 'si':
                prob *= transitionMatrix[0][1]
                activityList.append("icecream")
                activitytoday ='icecream'
            else :
                prob *= transitionMatrix[0][2]
                activityList.append("run")
                activitytoday='run'

        elif activitytoday == "icecream":
            change = np.random.choice(transitionName[1], replace=True, p=transitionMatrix[1])
            if change == 'is':
                prob *= transitionMatrix[1][0]
                activityList.append("sleep")
                activitytoday = 'sleep'
            elif change == 'ii':
                prob *= transitionMatrix[1][1]
                activityList.append("icecream")
            else:
                prob *= transitionMatrix[1][2]
                activityList.append("run")
                activitytoday = 'run'

        else:
            change = np.random.choice(transitionName[2], replace=True, p=transitionMatrix[2])
            if change == 'rs':
                prob *= transitionMatrix[2][0]
                activityList.append("sleep")
                activitytoday = 'sleep'
            elif change == 'ri':
                prob *= transitionMatrix[2][1]
                activityList.append("icecream")
                activitytoday = 'icecream'
            else:
                prob *= transitionMatrix[2][2]
                activityList.append("run")
        i+=1
        print(" after " + str(i) + " days: " + activitytoday)
        print("Possible states: " + str(activityList))
        print("Probability of the possible sequence of states: " + str(prob))
activity_forecast(2)

運行結(jié)果 :


markov.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 今年還是會繼續(xù)每周動筆畫一畫,畫夠一年52周。 看了段講額爾濟納胡楊林的小視頻,讓人長草,希望今年能去看一看。畫了...
    兔婭婭閱讀 386評論 0 2
  • 工作最重要的是順心,可現(xiàn)在每每上班心里就堵的慌,對未來的茫然,對現(xiàn)狀的無奈。我想象中的工作是,有福同享有難同當,可...
    A菠菜閱讀 407評論 0 0
  • 愛和感恩閱讀 350評論 0 0
  • 感賞兒子今天在餐桌上跟我們討論我的工作。我跟老公聊起這幾天去韶關(guān)的調(diào)研工作,兒子主動問我調(diào)研是做什么,我把工作一一...
    陳慶chen閱讀 130評論 0 1
  • ?文章由「更好時代」原創(chuàng)發(fā)布,保留所有權(quán),全網(wǎng)違反相關(guān)法律的抄襲行為將受到更好時代專業(yè)法律團隊相應的嚴重法律追責。...
    更好時代閱讀 584評論 0 0

友情鏈接更多精彩內(nèi)容