41 #include <pcl/console/print.h>
42 #include <pcl/ml/svm.h>
51 #define Malloc(type, n) static_cast<type*>(malloc((n) * sizeof(type)))
116 std::vector<pcl::SVMDataPoint>
SV;
149 fprintf(stderr,
"Wrong input format at line %d\n", line_num);
154 inline const std::string&
187 svm_destroy_param(&
param_);
203 int nr_class = svm_get_nr_class(&
model_);
204 int* labels_ =
static_cast<int*
>(malloc(nr_class *
sizeof(
int)));
205 svm_get_labels(&
model_, labels_);
207 for (
int j = 0; j < nr_class; j++)
208 labels.push_back(labels_[j]);
221 if (svm_save_model(filename, &
model_)) {
222 fprintf(stderr,
"can't save model to file %s\n", filename);
271 svm_set_print_string_function(
279 svm_free_model_content(&
model_);
348 svm_set_print_string_function(
nullptr);
350 svm_set_print_string_function(&
printNull);
407 svm_free_model_content(&
model_);
414 assert(training_set.size() > 0);
418 PCL_ERROR(
"[pcl::%s::setInputTrainingSet] Classifier model not loaded!\n",
476 for (
int j = 0; j < i; j++) {
SVM (Support Vector Machines) classification of a dataset.
bool saveClassProblem(const char *filename)
Save the raw classification problem in a file (in svmlight format).
bool saveNormClassProblem(const char *filename)
Save the normalized classification problem in a file (in svmlight format).
std::vector< std::vector< double > > prediction_
bool loadClassProblem(const char *filename)
Read in a raw classification problem (in svmlight format).
void resetTrainingSet()
Reset the training set.
bool predict_probability_
~SVMClassify()
Destructor.
std::vector< SVMData > getInputTrainingSet()
Return the current training set.
std::vector< double > classification(SVMData in)
Start the classification on a single set.
bool classification()
Start the classification on un-labelled input dataset.
void saveClassificationResult(const char *filename)
Save the classification result in an extern file.
void setProbabilityEstimates(bool set)
Set whether the classification has to be done with the probability estimate.
void getClassificationResult(std::vector< std::vector< double >> &out)
Get the result of the classification.
SVMClassify()
Constructor.
bool model_extern_copied_
bool classificationTest()
Start the classification on labelled input dataset.
void setClassifierModel(SVMModel model)
Set the classifier model.
void setInputTrainingSet(std::vector< SVMData > training_set)
It adds/store the training set with labelled data.
bool loadClassifierModel(const char *filename)
Read in a classifier model (in svmlight format).
void scaleProblem(svm_problem &input, svm_scaling scaling)
It scales the input dataset using the model information.
std::vector< SVMData > training_set_
bool loadNormClassProblem(const char *filename)
Read in a normalized classification problem (in svmlight format).
Base class for SVM SVM (Support Vector Machines).
bool loadProblem(const char *filename, svm_problem &prob)
Load a problem from an extern file.
char * readline(FILE *input)
To read a line from the input file.
void saveClassifierModel(const char *filename)
Save the classifier model in an extern file (in svmlight format).
const std::string & getClassName() const
Get a string representation of the name of this class.
bool labelled_training_set_
void adaptLibSVMToInput(std::vector< SVMData > &training_set, svm_problem prob) const
Convert the libSVM format (svm_problem) into a easier output format.
void adaptInputToLibSVM(std::vector< SVMData > training_set, svm_problem &prob)
Convert the input format (vector of SVMData) into a readable format for libSVM.
bool saveProblem(const char *filename, bool labelled)
Save the raw problem in an extern file.
void getLabel(std::vector< int > &labels)
Return the labels order from the classifier model.
void exitInputError(int line_num)
Outputs an error in file reading.
std::vector< SVMData > training_set_
bool saveProblemNorm(const char *filename, svm_problem prob_, bool labelled)
Save the problem (with normalized values) in an extern file.
static void printNull(const char *)
Set for output printings during classification.
SVM (Support Vector Machines) training class for the SVM machine learning.
void doCrossValidation()
To cross validate the classifier.
void resetTrainingSet()
Reset the training set.
int cross_validation_
Set too 1 for cross validating the classifier.
SVMModel getClassifierModel()
Return the result of the training.
bool debug_
Set to 1 to see the training output.
void setInputTrainingSet(std::vector< SVMData > training_set)
It adds/store the training set with labelled data.
bool loadProblem(const char *filename)
Read in a problem (in svmlight format).
std::vector< SVMData > getInputTrainingSet()
Return the current training set.
bool saveNormTrainingSet(const char *filename)
Save the normalized training set in a file (in svmlight format).
bool saveTrainingSet(const char *filename)
Save the raw training set in a file (in svmlight format).
bool trainClassifier()
Start the training of the SVM classifier.
void setDebugMode(bool in)
Set to 1 for debugging info.
void scaleFactors(std::vector< SVMData > training_set, svm_scaling &scaling)
It extracts scaling factors from the input training_set.
void setParameters(SVMParam param)
Change default training parameters (pcl::SVMParam).
std::vector< SVMData > training_set_
int nr_fold_
Number of folds to be used during cross validation.
SVMParam getParameters()
Return the current training parameters.
The structure stores the features and the label of a single sample which has to be used for the train...
std::vector< pcl::SVMDataPoint > SV
Vector of features for the specific sample.
double label
Pointer to the label value. It is a mandatory to train the classifier.
The structure initialize a single feature value for the classification using SVM (Support Vector Mach...
int idx
It's the feature index. It has to be an integer number greater or equal to zero.
float value
The value assigned to the correspondent feature.
The structure initialize a model created by the SVM (Support Vector Machines) classifier (pcl::SVMTra...
The structure stores the parameters for the classificationa nd must be initialized and passed to the ...
struct svm_node * scaling