Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从数据序列构造一阶马尔可夫链转移矩阵(Java,Matlab)_Java_Matlab_Transitions_Markov Chains - Fatal编程技术网

从数据序列构造一阶马尔可夫链转移矩阵(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,否则Matlab就可以了

我将每个序列放在不同的文件中(当然,我可以将所有内容合并到一个文件中),其中一个问题是我没有序列的标准长度。 我知道状态空间,我只对状态转换感兴趣

我读过:但我不确定它是否适合我的问题。
我还想知道是否有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