gpt4 book ai didi

python - 转移概率矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 09:41:02 24 4
gpt4 key购买 nike

我有以下数组:

a=[['A', 'B'],
['B', 'B'],
['B', 'C'],
['C', 'B'],
['B', 'A'],
['A', 'D'],
['D', 'D'],
['D', 'A'],
['A', 'B'],
['B', 'A'],
['A', 'D']]

我想制作一个转移概率矩阵,这样我就可以得到:

[[P_AA,P_AB,P_AC,P_AD],
[P_BA,P_BB,P_BC,P_BD],
[P_CA,P_CB,P_CC,P_CD],
[P_DA,P_DB,P_DC,P_DD]]

(上面是为了说明),其中 P_AA 计算数组 a 中有多少 ["A","A"] 等等除以 P_AA+P_AB+P_AC+P_AD 。我已经开始使用计数器了

from collections import Counter
Counter(tuple(x) for x in l)

正确计算数组元素的方法是:

Counter({('A', 'B'): 2,
('B', 'B'): 1,
('B', 'C'): 1,
('C', 'B'): 1,
('B', 'A'): 2,
('A', 'D'): 2,
('D', 'D'): 1,
('D', 'A'): 1})

所以矩阵应该是,

[[0,2/5,0,2/5],[2/4,1/4,1/4,0],[0,1,0,0],[1/2,0,0,1/2]]

最佳答案

基于 pandas 的解决方案:

import pandas as pd
from collections import Counter
# Create a raw transition matrix
matrix = pd.Series(Counter(map(tuple, a))).unstack().fillna(0)
# Normalize the rows
matrix.divide(matrix.sum(axis=1),axis=0)
# A B C D
#A 0.0 0.50 0.00 0.5
#B 0.5 0.25 0.25 0.0
#C 0.0 1.00 0.00 0.0
#D 0.5 0.00 0.00 0.5

关于python - 转移概率矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51731187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com