这篇关于在 C# 中实现隐马尔可夫模型的优秀文章在根据训练数据对单个位序列进行分类方面做得很好。
如何修改算法或构建它(多个 HMM?)以支持多个同时位序列的分类?
例子
而不是只分类一个流:
double t1 = hmm.Evaluate(new int[] { 0,1 }); // 0.49999423004045024
double t2 = hmm.Evaluate(new int[] { 0,1,1,1 }); // 0.11458685045803882
而是对双比特流进行分类:
double t1 = hmm.Evaluate(new int[] { [0, 0], [0, 1] });
double t2 = hmm.Evaluate(new int[] { [0, 0], [1, 1], [0, 1], [1, 1] });
或者更好的是,三个流:
double t1 = hmm.Evaluate(new int[] { [0, 0, 1], [0, 0, 1] });
double t2 = hmm.Evaluate(new int[] { [0, 0, 1], [1, 1, 0], [0, 1, 1], [1, 1, 1] });
显然训练数据也会被扩展。