bool KMeansQuantizer::train(MatrixDouble &trainingData){ if( !initialized ){ errorLog << "train(MatrixDouble &trainingData) - The quantizer has not been initialized!" << endl; return false; } //Reset any previous model quantizerTrained = false; featureDataReady = false; clusters.clear(); quantizationDistances.clear(); //Train the KMeans model KMeans kmeans; kmeans.setNumClusters(numClusters); kmeans.setComputeTheta( true ); kmeans.setMinChange( 1.0e-10 ); kmeans.setMinNumEpochs( 10 ); kmeans.setMaxNumEpochs( 10000 ); if( !kmeans.trainInplace(trainingData) ){ errorLog << "train(MatrixDouble &trainingData) - Failed to train quantizer!" << endl; return false; } //Save the clusters from the KMeans model clusters = kmeans.getClusters(); quantizationDistances.resize(numClusters,0); quantizerTrained = true; return true; }