Fix feature size calculation and add error handling for KMeans training (#21155)
Stelios Fragkakis committed
Oct 16, 2025 at 16:04 UTC
d22056fc04908e22990a3443c7d74c62162ee4ba
2 files changed
+6
-1
src/ml/ml_features.cc
+1
-1
@@ -53,7 +53,7 @@ static void ml_features_lag(ml_features_t *features, double sampling_ratio)
53
54
for (size_t idx = 0; idx != n; idx++) {
55
DSample &DS = features->preprocessed_features[sample_idx++];
56
- DS.set_size(features->lag_n);
56
+ DS.set_size(features->lag_n + 1);
57
58
if (Cfg.random_nums[idx % Cfg.random_nums.size()] > cutoff) {
59
sample_idx--;
src/ml/ml_kmeans.cc
+5
@@ -32,6 +32,11 @@ ml_kmeans_train(ml_kmeans_t *kmeans, const ml_features_t *features, unsigned max
32
33
kmeans->cluster_centers.clear();
34
35
+ if (features->preprocessed_features.size() < 2) {
36
+ netdata_log_error("ml_kmeans_train: not enough features to train kmeans (size=%zu)", features->preprocessed_features.size());
37
+ return;
38
+ }
39
+
40
dlib::pick_initial_centers(2, kmeans->cluster_centers, features->preprocessed_features);
41
dlib::find_clusters_using_kmeans(features->preprocessed_features, kmeans->cluster_centers, max_iters);
42