Browse Source

anomaly detector ++

seasonality-grid-#28
Alexey Velikiy 2 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 mut vts = Vec::new();
for k in 0..iter_steps {
let mut vts = Vec::new();
for si in 0..SEASONALITY_ITERATIONS {
vts.push(ts[k + iter_steps * si as usize].1);
}
let mut vt: f64 = vts.iter().sum();
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;
return Ok(());

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

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

Loading…
Cancel
Save