#include #include "clustering.h" #include "IndexFlat.h" #include #include #include void kmean_clustering(int d, int n, int k, const float *x, float *centroids, int seed){ std::mt19937 gen(seed); std::uniform_int_distribution distr(0, n - 1); for (int i = 0; i < k; i++) { int rand_idx = distr(gen); std::memcpy(centroids + (i * d), x + (rand_idx * d), d * sizeof(float)); } int niter = 15; std::vector assign(n); std::vector distances(n); for(int iter = 0; iter newcentroid(k*d,0.0); std::vector counts(k,0); for(int i = 0; i0){ for(int m = 0; m