Skip to content

Instantly share code, notes, and snippets.

@paralax
Created February 3, 2017 14:43
Show Gist options
  • Save paralax/2a08d4b8158d2e86d232d6fc07286d50 to your computer and use it in GitHub Desktop.
Save paralax/2a08d4b8158d2e86d232d6fc07286d50 to your computer and use it in GitHub Desktop.
Hidden Markov Model in F# using Accord Framework and Baum Welch Learning
// based on this example http://accord-framework.net/docs/html/T_Accord_Statistics_Models_Markov_Learning_BaumWelchLearning.htm
open System
open Accord.Math
open Accord.Statistics.Models.Markov.Learning
open Accord.Statistics.Models.Markov
let sequences = [|
[| 0;5;3;2;5;2|];
[| 0;5;4;2;5;2|];
[| 0;5;2;3;5;2|];
[| 0;5;2;2;5;3|];
[| 0;1;1;1;1;0;1;1;1;1 |];
[| 0;1;1;1;0;1;1;1;1;1 |];
[| 0;1;1;1;1;1;1;1;1;1 |];
[| 0;1;1;1;1;1 |];
[| 0;1;1;1;1;1;1 |];
[| 0;1;1;1;1;1;1;1;1;1 |];
[| 0;1;1;1;1;1;1;1;1;1 |];
|]
let hmm = new HiddenMarkovModel(7,6)
let teacher = new BaumWelchLearning(hmm)
teacher.Tolerance = 0.0001
teacher.Iterations = 0
teacher.Learn(sequences)
let l1 = Math.Exp(hmm.LogLikelihood([|0;1|]))
let l2 = Math.Exp(hmm.LogLikelihood([|0;1;1;1|]))
let l3 = Math.Exp(hmm.LogLikelihood([|1;1|]))
let l4 = Math.Exp(hmm.LogLikelihood([|1;0;0;0;|]))
let l5 = Math.Exp(hmm.LogLikelihood([|0; 1; 0; 1; 1; 1; 1; 0; 1 |]))
let l6 = Math.Exp(hmm.LogLikelihood([|0; 1; 1; 1; 1; 1; 1; 1; 1 |]))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment