pub struct HmmFitControl {
pub seed: u64,
pub max_iterations: usize,
pub tolerance: f64,
pub max_work: u64,
pub probability_floor: f64,
}Expand description
Deterministic initialization, convergence, and work policy for Baum-Welch.
Fields§
§seed: u64Caller-owned deterministic initialization seed.
max_iterations: usizeHard maximum number of accepted Baum-Welch updates.
tolerance: f64Relative log-likelihood convergence tolerance.
max_work: u64Hard maximum charged state-transition work.
probability_floor: f64Probability floor used while normalizing fitted rows.
Implementations§
Source§impl HmmFitControl
impl HmmFitControl
Sourcepub fn new(
seed: u64,
max_iterations: usize,
tolerance: f64,
max_work: u64,
probability_floor: f64,
) -> Result<Self, HmmError>
pub fn new( seed: u64, max_iterations: usize, tolerance: f64, max_work: u64, probability_floor: f64, ) -> Result<Self, HmmError>
Builds checked fitting control.
Examples found in repository?
examples/bounded_sequence_inference.rs (line 49)
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7 let policy = QuantilePolicy::new(0.02, 8, 256)?;
8 let mut left = QuantileSketch::new(policy.clone())?;
9 let mut right = QuantileSketch::new(policy)?;
10 for value in 0..100 {
11 if value % 2 == 0 {
12 left.insert(value as f64)?;
13 } else {
14 right.insert(value as f64)?;
15 }
16 }
17 left.merge(&right)?;
18 let median = left.estimate(0.5)?;
19 println!(
20 "quantile value={} rank=[{:.3},{:.3}] retained={} exact={}",
21 median.value, median.rank_lower, median.rank_upper, median.retained_entries, median.exact
22 );
23
24 let model = HiddenMarkovModel::discrete(
25 vec!["quiet", "active"],
26 vec![0.6, 0.4],
27 vec![vec![0.8, 0.2], vec![0.3, 0.7]],
28 vec![vec![0.9, 0.1], vec![0.2, 0.8]],
29 )?;
30 let observations = [0, 0, 1, 1];
31 let inference = forward_backward(&model, &observations)?;
32 let path = viterbi(&model, &observations)?;
33 println!(
34 "inference log-likelihood={:.6} path={:?} repairs={}",
35 inference.evidence.log_likelihood, path.states, inference.evidence.numerical_repairs
36 );
37
38 let data = [
39 Sequence::Discrete(vec![0, 0, 1, 1, 1, 0]),
40 Sequence::Discrete(vec![0, 1, 1, 0, 0, 0]),
41 ];
42 let report = fit_hmm(
43 &data,
44 HmmSpec::Discrete {
45 states: 2,
46 symbols: 2,
47 additive_smoothing: 1.0e-6,
48 },
49 HmmFitControl::new(23, 6, 1.0e-7, 10_000, 1.0e-12)?,
50 )?;
51 println!(
52 "fit likelihood={:.6} iterations={} converged={} repairs={} work={} termination={:?} seed={}",
53 report.evidence.log_likelihood,
54 report.evidence.iterations,
55 report.evidence.converged,
56 report.evidence.numerical_repairs,
57 report.evidence.work,
58 report.evidence.termination,
59 report.evidence.seed
60 );
61 Ok(())
62}Trait Implementations§
Source§impl Clone for HmmFitControl
impl Clone for HmmFitControl
Source§fn clone(&self) -> HmmFitControl
fn clone(&self) -> HmmFitControl
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for HmmFitControl
Source§impl Debug for HmmFitControl
impl Debug for HmmFitControl
Source§impl PartialEq for HmmFitControl
impl PartialEq for HmmFitControl
impl StructuralPartialEq for HmmFitControl
Auto Trait Implementations§
impl Freeze for HmmFitControl
impl RefUnwindSafe for HmmFitControl
impl Send for HmmFitControl
impl Sync for HmmFitControl
impl Unpin for HmmFitControl
impl UnsafeUnpin for HmmFitControl
impl UnwindSafe for HmmFitControl
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more