diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2022-04-14 18:12:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2022-04-14 18:12:10 +0000 |
commit | b5321aff06d6ea8d730d62aec2ffd8e9271c1ffc (patch) | |
tree | 36c41e35994786456154f9d3bf88c324763aeea4 /ml/Dimension.cc | |
parent | Adding upstream version 1.33.1. (diff) | |
download | netdata-b5321aff06d6ea8d730d62aec2ffd8e9271c1ffc.tar.xz netdata-b5321aff06d6ea8d730d62aec2ffd8e9271c1ffc.zip |
Adding upstream version 1.34.0.upstream/1.34.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ml/Dimension.cc')
-rw-r--r-- | ml/Dimension.cc | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/ml/Dimension.cc b/ml/Dimension.cc index c27f30bb4..290d4c743 100644 --- a/ml/Dimension.cc +++ b/ml/Dimension.cc @@ -125,9 +125,15 @@ MLResult TrainableDimension::trainModel() { if (!CNs) return MLResult::MissingData; - SamplesBuffer SB = SamplesBuffer(CNs, N, 1, Cfg.DiffN, Cfg.SmoothN, Cfg.LagN); + unsigned TargetNumSamples = Cfg.MaxTrainSamples * Cfg.RandomSamplingRatio; + double SamplingRatio = std::min(static_cast<double>(TargetNumSamples) / N, 1.0); + + SamplesBuffer SB = SamplesBuffer(CNs, N, 1, Cfg.DiffN, Cfg.SmoothN, Cfg.LagN, + SamplingRatio, Cfg.RandomNums); KM.train(SB, Cfg.MaxKMeansIters); + Trained = true; + ConstantModel = true; delete[] CNs; return MLResult::Success; @@ -146,6 +152,10 @@ void PredictableDimension::addValue(CalculatedNumber Value, bool Exists) { } std::rotate(std::begin(CNs), std::begin(CNs) + 1, std::end(CNs)); + + if (CNs[N - 1] != Value) + ConstantModel = false; + CNs[N - 1] = Value; } @@ -157,7 +167,8 @@ std::pair<MLResult, bool> PredictableDimension::predict() { CalculatedNumber *TmpCNs = new CalculatedNumber[N * (Cfg.LagN + 1)](); std::memcpy(TmpCNs, CNs.data(), N * sizeof(CalculatedNumber)); - SamplesBuffer SB = SamplesBuffer(TmpCNs, N, 1, Cfg.DiffN, Cfg.SmoothN, Cfg.LagN); + SamplesBuffer SB = SamplesBuffer(TmpCNs, N, 1, Cfg.DiffN, Cfg.SmoothN, Cfg.LagN, + 1.0, Cfg.RandomNums); AnomalyScore = computeAnomalyScore(SB); delete[] TmpCNs; |