Browse Source

sync ts in anomaly detector model

seasonality-grid-#28
Alexey Velikiy 3 years ago
parent
commit
4bef763f49
  1. 8
      server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs

8
server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs

@ -54,13 +54,11 @@ impl SARIMA {
let mut res_ts = Vec::<(u64, f64)>::new(); let mut res_ts = Vec::<(u64, f64)>::new();
let from = ts[0].0; let from = ts[0].0;
let to = ts.last().unwrap().0; let to = ts.last().unwrap().0;
// let s_from = ts[ts.len() - (self.seasonality / DETECTION_STEP) as usize].0; let iter_steps = (self.seasonality / DETECTION_STEP) as usize;
if to - from != SEASONALITY_ITERATIONS * self.seasonality { if to - from != SEASONALITY_ITERATIONS * self.seasonality {
return Err(anyhow::format_err!("timeserie to learn from should be {} * sasonality", SEASONALITY_ITERATIONS)); return Err(anyhow::format_err!("timeserie to learn from should be {} * sasonality", SEASONALITY_ITERATIONS));
} }
let iter_steps = (self.seasonality / DETECTION_STEP) as usize;
for k in 0..iter_steps { for k in 0..iter_steps {
let mut vts = Vec::new(); let mut vts = Vec::new();
@ -69,12 +67,10 @@ impl SARIMA {
} }
let mut vt: f64 = vts.iter().sum(); let mut vt: f64 = vts.iter().sum();
vt /= SEASONALITY_ITERATIONS as f64; vt /= SEASONALITY_ITERATIONS as f64;
let t = ts[k + iter_steps * (SEASONALITY_ITERATIONS as usize - 1)].0; let t = ts[ts.len() - iter_steps + k].0;
res_ts.push((t, vt)); res_ts.push((t, vt));
} }
// TODO: `to` should be equal to res_ts.last().0
self.ts = res_ts; self.ts = res_ts;
return Ok(()); return Ok(());

Loading…
Cancel
Save