Browse Source

anomaly detector ++

seasonality-grid-#28
Alexey Velikiy 3 years ago
parent
commit
91066fe93a
  1. 8
      server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs
  2. 1
      server/src/services/analytic_service/analytic_unit/types.rs

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

@ -61,16 +61,20 @@ impl SARIMA {
} }
let iter_steps = (self.seasonality / DETECTION_STEP) as usize; let iter_steps = (self.seasonality / DETECTION_STEP) as usize;
let mut vts = Vec::new();
for k in 0..iter_steps { for k in 0..iter_steps {
let mut vts = Vec::new();
for si in 0..SEASONALITY_ITERATIONS { for si in 0..SEASONALITY_ITERATIONS {
vts.push(ts[k + iter_steps * si as usize].1); vts.push(ts[k + iter_steps * si as usize].1);
} }
let mut vt: f64 = vts.iter().sum(); let mut vt: f64 = vts.iter().sum();
vt /= SEASONALITY_ITERATIONS as f64; vt /= SEASONALITY_ITERATIONS as f64;
res_ts.push((k as u64 * DETECTION_STEP, vt)); let t = ts[k + iter_steps * (SEASONALITY_ITERATIONS as usize - 1)].0;
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(());

1
server/src/services/analytic_service/analytic_unit/types.rs

@ -82,6 +82,7 @@ impl AnalyticUnitConfig {
}, },
PatchConfig::Anomaly(tcfg) => match self.clone() { PatchConfig::Anomaly(tcfg) => match self.clone() {
// TODO: return true is it's seasonality change
AnalyticUnitConfig::Anomaly(_) => { AnalyticUnitConfig::Anomaly(_) => {
if tcfg.is_some() { if tcfg.is_some() {
return (AnalyticUnitConfig::Anomaly(tcfg.unwrap()), false); return (AnalyticUnitConfig::Anomaly(tcfg.unwrap()), false);

Loading…
Cancel
Save