我在尝试使用转移矩阵模拟数据。我使用这个回答里提到的方法生成了转移矩阵,所以假设我的数据是:
days=['rain', 'rain', 'rain', 'clouds', 'rain', 'sun', 'clouds', 'clouds',
'rain', 'sun', 'rain', 'rain', 'clouds', 'clouds', 'sun', 'sun',
'clouds', 'clouds', 'rain', 'clouds', 'sun', 'rain', 'rain', 'sun',
'sun', 'clouds', 'clouds', 'rain', 'rain', 'sun', 'sun', 'rain',
'rain', 'sun', 'clouds', 'clouds', 'sun', 'sun', 'clouds', 'rain',
'rain', 'rain', 'rain', 'sun', 'sun', 'sun', 'sun', 'clouds', 'sun',
'clouds', 'clouds', 'sun', 'clouds', 'rain', 'sun', 'sun', 'sun',
'clouds', 'sun', 'rain', 'sun', 'sun', 'sun', 'sun', 'clouds',
'rain', 'clouds', 'clouds', 'sun', 'sun', 'sun', 'sun', 'sun', 'sun',
'clouds', 'clouds', 'clouds', 'clouds', 'clouds', 'sun', 'rain',
'rain', 'rain', 'clouds', 'sun', 'clouds', 'clouds', 'clouds', 'rain',
'clouds', 'rain', 'sun', 'sun', 'clouds', 'sun', 'sun', 'sun', 'sun',
'sun', 'sun', 'rain']
我使用以下方法创建转移矩阵:
pd.crosstab(pd.Series(days[1:],name='Tomorrow'),
pd.Series(days[:-1],name='Today'),normalize=1)
这将产生以下输出:
Today clouds rain sun
Tomorrow
clouds 0.40625 0.230769 0.309524
rain 0.28125 0.423077 0.142857
sun 0.31250 0.346154 0.547619
现在,我想使用上面的矩阵生成输出。假设我的随机起点是'rain',那么输出将是(例如):
[rain, rain, clouds, sun]
很不幸,我只能找到使用字典创建矩阵的解决方案。
编辑: 我使用了:
pd.crosstab(pd.Series(word[:-1],name='Current'),
pd.Series(word[1:],name='Next'),normalize=0)
我的矩阵:
Next a b c d e f g h
Current
a 0.0 0.0 0.428571 0.571429 0.0 0.0 0.0 0.0
b 0.0 0.0 0.230769 0.769231 0.0 0.0 0.0 0.0
c 0.0 0.0 0.000000 0.000000 0.0 0.0 1.0 0.0
d 0.0 0.0 0.000000 0.000000 0.0 0.0 0.0 1.0
e 1.0 0.0 0.000000 0.000000 0.0 0.0 0.0 0.0
f 0.0 1.0 0.000000 0.000000 0.0 0.0 0.0 0.0
g 0.0 0.0 0.000000 0.000000 1.0 0.0 0.0 0.0
h 0.0 0.0 0.000000 0.000000 0.0 1.0 0.0 0.0