2013-11-19 3 views
1

Я хочу оценить матрицу вероятностей перехода для цепи Маркова первого порядка из заданного набора последовательностей данных (т. Е. Данных по обращению). Возможно, в java, иначе Matlab в порядке.Построение марковской цепи Первичная матрица перехода из последовательностей данных (Java, Matlab)

У меня есть каждая последовательность в другом файле (но, конечно, я могу объединить все в одном), и одна из проблем заключается в том, что у меня нет стандартной длины для последовательностей. Я знаю пространство состояний, и меня интересуют только состояния переходов.

Я прочел следующее: Estimate Markov Chain Transition Matrix in MATLAB With Different State Sequence Lengths, но я не уверен, что это соответствует моей проблеме. Мне также интересно, есть ли библиотеки Java, которые справляются с этими проблемами. Если так, я не смог их найти.

ответ

2

Вы должны создать матрицу, которая учитывает переходы.

Для ряда 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.

Update: Использование индексов полукокса. Matlab может преобразовать каждый символ в число, используя double('A'), таким образом, это простой сдвиг индекса.

[email protected](x)(double(x)-'A'+1) 
[email protected](x)(char(x+'A'-1)) 
M(char2index('A'),char2index('B'))=M(char2index('A'),char2index('B'))+1 

Вторая функция index2char преобразует индексы обратно к персонажу.

+0

спасибо. Это было очень легко. У меня другой вопрос. Можете ли вы представить себе реализацию, которая работает для состояний, определенных как строки (например, A, B, C, D) вместо чисел? Я записал простую реализацию matlab с последовательностью чисел (также, я нашел функцию hmmestimate, которая работает очень хорошо). но я не могу придумать способ справиться со строкой. Спасибо за вашу доброту – Any

+0

Я обновил свой ответ, если вам нужны только ярлыки от 'A' до' Z' (1 символ), этого достаточно. Для более ярлыков я решил бы это с помощью 'container.Map' – Daniel