马尔可夫链

coding


















练习题
在英国,工党成员的第二代加入工党的概率为 0.5,加入保守党的概率为 0.4, 加入自由党的概率为 0.1。而保守党成员的第二代加入保守党的概率为 0.7,加入工党的 概率为 0.2,加入自由党的概率为 0.1。而自由党成员的第二代加入保守党的概率为 0.2, 加入工党的概率为 0.4,加入自由党的概率为 0.4。求自由党成员的第三代加入工党的概 率是多少?在经过较长的时间后,各党成员的后代加入各党派的概率分布是否具有稳定 性?

# -*- coding: utf-8 -*-

"""

Created on Thu Jan 12 10:42:13 2017

@author: DaiPuWei

"""

"""

这是练习题一: 在英国,工党成员的第二代加入工党的概率为 0.5,加入保守党的概率为

0.4, 加入自由党的概率为 0.1。而保守党成员的第二代加入保守党的概率为 0.7,加入

工党的 概率为 0.2,加入自由党的概率为 0.1。而自由党成员的第二代加入保守党的概率

为 0.2, 加入工党的概率为 0.4,加入自由党的概率为 0.4。求自由党成员的第三代加入

工党的概 率是多少?在经过较长的时间后,各党成员的后代加入各党派的概率分布是否具

有稳定性?

"""

import pandas as pd

import numpy as np

defrun_main():

"""

这是主函数

"""

#党派名称

party_name = ['工人党','保守党','自由党']

#党派下一代的转移矩阵

p = np.array([0.5,0.4,0.1,0.7,0.2,0.1,0.2,0.4,0.4]).reshape((3,3))

party_transition_matrix = pd.DataFrame(p,index = party_name,columns = party_name)

#第一次概率分布

probility = [0.,0.,0.]

sumall = sum(p)

for i in range(3):

probility[i] = sumall[i]/sum(sumall)

first_probility = pd.Series(probility,index = party_name)

#自由党成员第三代计入工人党的概率

tmp = first_probility * party_transition_matrix

print('自由党成员第三代计入工人党的概率为:%f' %tmp['工人党']['自由党'])

#各党派成员的后代假如各党派的概率分布

a,b = np.linalg.eig(party_transition_matrix)

finally_probility = []

for i in range(len(b)):s

if all(b[i]>0):

finally_probility = b[i]

break

finally_probility = finally_probility / sum(finally_probility)

Finally_probility = pd.Series(finally_probility,index = party_name)

print('各党派成员的后代假如各党派的概率分布如下:')

print(Finally_probility)

if __name__ == '__main__':

run_main()

本文分享 CSDN - 追梦者_AIer。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

以上是 马尔可夫链 的全部内容, 来源链接: utcz.com/z/510022.html

回到顶部