运行截图
代码如下
# 定义第一天的初始概率
start_probability = {'Rainy': 0.6, 'Sunny': 0.4}
# 定义天气转化的概率
transition_probability = {
'Rainy': {'Rainy': 0.7, 'Sunny': 0.3},
'Sunny': {'Rainy': 0.4, 'Sunny': 0.6},
}
# 定义在不同天气下进行不同工作的概率
emission_probability = {
'Rainy': {'walk': 0.1, 'shop': 0.4, 'clean': 0.5},
'Sunny': {'walk': 0.6, 'shop': 0.3, 'clean': 0.1},
}
# 第一天下雨的概率
v1 = start_probability.get('Rainy') * emission_probability.get('Rainy').get('walk')
Rainy = [v1]
# 第一天天晴的概率
v11 = start_probability.get('Sunny') * emission_probability.get('Sunny').get('walk')
Sunny = [v11]
array_1 = [v1, v11]
max_1 = 0
for i in array_1:
if i > max_1:
max_1 = i
for i in array_1:
if max_1 in Rainy:
print('Rainy')
break
if max_1 in Sunny:
print('Sunny')
break
# 第二天下雨的概率
v21_1 = v1 * transition_probability.get('Rainy').get('Rainy') * emission_probability.get('Rainy').get('shop')
v21_2 = v11 * transition_probability.get('Sunny').get('Rainy') * emission_probability.get('Rainy').get('shop')
# 第二天晴天的概率
v22_1 = v1 * transition_probability.get('Rainy').get('Sunny') * emission_probability.get('Sunny').get('shop')
v22_2 = v11 * transition_probability.get('Sunny').get('Sunny') * emission_probability.get('Sunny').get('shop')
max2 = 0
array = [v21_1, v21_2, v22_1, v22_2]
Rainy = [v21_1, v21_2]
Sunny = [v22_1, v22_2]
for i in array:
if i > max2:
max2 = i
for i in array:
if max2 in Rainy:
print('Rainy')
break
if max2 in Sunny:
print("Sunny")
break
# 第三天的天气情况
# 第三天下雨的概率
v31_1 = v21_1 * transition_probability.get('Rainy').get('Rainy') * emission_probability.get('Rainy').get('clean')
v31_2 = v21_2 * transition_probability.get('Rainy').get('Rainy') * emission_probability.get('Rainy').get('clean')
v31_3 = v22_1 * transition_probability.get('Sunny').get('Rainy') * emission_probability.get('Rainy').get('clean')
v31_4 = v22_2 * transition_probability.get('Sunny').get('Rainy') * emission_probability.get('Rainy').get('clean')
# 第三天天晴的概率
v32_1 = v21_1 * transition_probability.get('Rainy').get('Sunny') * emission_probability.get('Sunny').get('clean')
v32_2 = v21_2 * transition_probability.get('Rainy').get('Sunny') * emission_probability.get('Sunny').get('clean')
v32_3 = v22_1 * transition_probability.get('Sunny').get('Sunny') * emission_probability.get('Sunny').get('clean')
v32_4 = v22_2 * transition_probability.get('Sunny').get('Sunny') * emission_probability.get('Sunny').get('clean')
max3 = 0
array3 = [v31_1, v31_2, v31_3, v31_4, v32_1, v32_2, v32_3, v32_4]
Rainy = [v31_1, v31_2, v31_3, v31_4]
Sunny = [v32_1, v32_2, v32_3, v32_4]
for i in array3:
if i > max3:
max3 = i
for i in array:
if max3 in Rainy:
print('Rainy')
break
if max3 in Sunny:
print('Sunny')
break