从数据序列构造一阶马尔可夫链转移矩阵(Java,Matlab)
我想从一组给定的数据序列(即点击流数据)估计一阶马尔可夫链的转移概率矩阵。可能是java,否则Matlab就可以了 我将每个序列放在不同的文件中(当然,我可以将所有内容合并到一个文件中),其中一个问题是我没有序列的标准长度。 我知道状态空间,我只对状态转换感兴趣 我读过:但我不确定它是否适合我的问题。从数据序列构造一阶马尔可夫链转移矩阵(Java,Matlab),java,matlab,transitions,markov-chains,Java,Matlab,Transitions,Markov Chains,我想从一组给定的数据序列(即点击流数据)估计一阶马尔可夫链的转移概率矩阵。可能是java,否则Matlab就可以了 我将每个序列放在不同的文件中(当然,我可以将所有内容合并到一个文件中),其中一个问题是我没有序列的标准长度。 我知道状态空间,我只对状态转换感兴趣 我读过:但我不确定它是否适合我的问题。 我还想知道是否有Java库可以处理这个问题。如果是这样,我就找不到它们。你必须创建一个计算转换次数的矩阵 对于行1,4,4,6,7 你必须把它设置好 M(1,4)=M(1,4)+1 M(4,4)=
我还想知道是否有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
更新:使用字符索引。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
将索引转换回字符。谢谢。那真的很容易。我还有一个问题想。你能想到一个适用于定义为字符串(即A、B、C、D)而不是数字的状态的实现吗?我用一系列数字写下了一个简单的matlab实现(另外,我还发现hmmestimate函数工作得很好)。但我想不出一个处理字符串的方法。感谢您的好意我更新了我的答案,如果您只需要标签从A
到Z
(1个字符)这就足够了。对于更多标签,我将使用containers.Map