3 个不稳定版本

0.2.0 2020年9月19日
0.1.1 2019年2月10日
0.1.0 2019年2月10日

#1376算法

MIT/Apache

45KB
881

🤔 hmmm 🤔

Rust 中的隐藏马尔可夫模型。

此库包含一个时间不变的离散观测隐藏马尔可夫模型 Rust 实现。它包括通过 Baum-Welch 期望最大化算法的最大似然估计和通过 Viterbi 算法进行隐藏状态推理。

有关如何使用此库的详细文档,请参阅 hmmm::HMM

以下,HMM 被训练以识别模式 001001001...

use hmmm::HMM;
use ndarray::{array, Array1};
use rand::SeedableRng as _;

let training_ys = array![0, 0, 1, 0, 0, 1, 0];
let mut rng = rand::rngs::StdRng::seed_from_u64(1337);
let hmm = HMM::train(&training_ys, 3, 2, &mut rng);
let sampled_ys: Array1<usize> = hmm.sampler(&mut rng)
    .map(|sample| sample.y)
    .take(10)
    .collect();
assert_eq!(array![0, 0, 1, 0, 0, 1, 0, 0, 1, 0], sampled_ys);

构建

此项目使用 cargo-make。有关构建命令的完整列表,请参阅 Makefile.toml,但此项目的主要有用命令是 cargo make all

有一个小的基准测试功能,由 benchmark 功能控制。

备注

Kevin Murphy 的《概率视角下的机器学习》第17.3节和第17.4节,以及Christopher Bishop 的《模式识别与机器学习》第13.2节,都是宝贵的参考资料。

我已尽力使数学符号在渲染的 HTML 和源代码中均可读。符号强烈受到维基百科中关于 Baum-Welch 算法的页面的启发。

许可证:MIT/Apache-2.0

依赖项

~2.5MB
~51K SLoC