3 个不稳定版本
0.2.0 | 2020年9月19日 |
---|---|
0.1.1 | 2019年2月10日 |
0.1.0 | 2019年2月10日 |
#1376 在 算法
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