Skip to content

Commit d22056f

Browse files
authored
Fix feature size calculation and add error handling for KMeans training (#21155)
1 parent 2294cc9 commit d22056f

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

src/ml/ml_features.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ static void ml_features_lag(ml_features_t *features, double sampling_ratio)
5353

5454
for (size_t idx = 0; idx != n; idx++) {
5555
DSample &DS = features->preprocessed_features[sample_idx++];
56-
DS.set_size(features->lag_n);
56+
DS.set_size(features->lag_n + 1);
5757

5858
if (Cfg.random_nums[idx % Cfg.random_nums.size()] > cutoff) {
5959
sample_idx--;

src/ml/ml_kmeans.cc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ ml_kmeans_train(ml_kmeans_t *kmeans, const ml_features_t *features, unsigned max
3232

3333
kmeans->cluster_centers.clear();
3434

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+
3540
dlib::pick_initial_centers(2, kmeans->cluster_centers, features->preprocessed_features);
3641
dlib::find_clusters_using_kmeans(features->preprocessed_features, kmeans->cluster_centers, max_iters);
3742

0 commit comments

Comments
 (0)