我想从一组给定的数据序列(即点击流数据)中估算一阶马尔可夫链的转移概率矩阵。可能在Java中,否则Matlab可以。
我将每个序列保存在不同的文件中(但是我当然可以将所有内容合并到一个文件中),问题之一是我没有序列的标准长度。
我知道状态空间,并且只对状态转换感兴趣。
我读过这篇文章:Estimate Markov Chain Transition Matrix in MATLAB With Different State Sequence Lengths但我不确定它是否适合我的问题。
我还想知道是否有Java库可以处理此问题。如果是这样,我将找不到它们。
最佳答案
您必须创建一个计算转换的矩阵。
对于1,4,4,6,7
行
你必须设置
M(1,4)=M(1,4)+1
M(4,4)=M(4,4)+1
M(4,6)=M(4,6)+1
M(6,7)=M(4,7)+1
最后将每一行归一化为总和1。
更新:使用char索引。 Matlab可以使用
double('A')
将每个字符转换为数字,因此它是简单的索引移位。char2index=@(x)(double(x)-'A'+1)
index2char=@(x)(char(x+'A'-1))
M(char2index('A'),char2index('B'))=M(char2index('A'),char2index('B'))+1
第二个功能
index2char
将索引转换回字符。