void ex_kmeans () { SampleList samples; ssi_size_t n_classes = 4; ssi_size_t n_sampels = 200; ssi_size_t n_streams = 1; ssi_real_t distr[][3] = { 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f }; ModelTools::CreateTestSamples (samples, n_classes, n_sampels, n_streams, distr); // training { KMeans *model = ssi_create (KMeans, "kmeans", true); model->getOptions()->k = n_classes; Trainer trainer (model); trainer.train (samples); trainer.save ("kmeans"); } // evaluation { Trainer trainer; Trainer::Load (trainer, "kmeans"); trainer.cluster (samples); ModelTools::PlotSamples(samples, "kmeans", ssi_rect(650, 0, 400, 400)); } // split { KMeans *model = ssi_create (KMeans, "kmeans", true); model->load("kmeans.trainer.KMeans.model"); ISSelectSample ss (&samples); ss.setSelection (model->getIndicesPerClusterSize(1), model->getIndicesPerCluster(1)); ModelTools::PlotSamples (ss, "kmeans", ssi_rect(650,0,400,400)); } }