The class implements K-Nearest Neighbors model. More...
#include <opencv2/ml.hpp>
Public Types | |
enum | Flags { UPDATE_MODEL = 1, RAW_OUTPUT =1, COMPRESSED_INPUT =2, PREPROCESSED_INPUT =4 } |
Predict options. More... | |
enum | Types { BRUTE_FORCE =1, KDTREE =2 } |
Implementations of KNearest algorithm. More... | |
Public Member Functions | |
virtual float | calcError (const Ptr< TrainData > &data, bool test, OutputArray resp) const |
Computes error on the training or test dataset. More... | |
virtual void | clear () |
Clears the algorithm state. More... | |
virtual bool | empty () const CV_OVERRIDE |
Returns true if the Algorithm is empty (e.g. More... | |
virtual float | findNearest (InputArray samples, int k, OutputArray results, OutputArray neighborResponses=noArray(), OutputArray dist=noArray()) const =0 |
Finds the neighbors and predicts responses for input vectors. More... | |
virtual int | getAlgorithmType () const =0 |
Algorithm type, one of KNearest::Types. More... | |
virtual int | getDefaultK () const =0 |
Default number of neighbors to use in predict method. More... | |
virtual String | getDefaultName () const |
Returns the algorithm string identifier. More... | |
virtual int | getEmax () const =0 |
Parameter for KDTree implementation. More... | |
virtual bool | getIsClassifier () const =0 |
Whether classification or regression model should be trained. More... | |
virtual int | getVarCount () const =0 |
Returns the number of variables in training samples. More... | |
virtual bool | isClassifier () const =0 |
Returns true if the model is classifier. More... | |
virtual bool | isTrained () const =0 |
Returns true if the model is trained. More... | |
virtual float | predict (InputArray samples, OutputArray results=noArray(), int flags=0) const =0 |
Predicts response(s) for the provided sample(s) More... | |
virtual void | read (const FileNode &fn) |
Reads algorithm parameters from a file storage. More... | |
virtual void | save (const String &filename) const |
Saves the algorithm to a file. More... | |
virtual void | setAlgorithmType (int val)=0 |
Algorithm type, one of KNearest::Types. More... | |
virtual void | setDefaultK (int val)=0 |
Default number of neighbors to use in predict method. More... | |
virtual void | setEmax (int val)=0 |
Parameter for KDTree implementation. More... | |
virtual void | setIsClassifier (bool val)=0 |
Whether classification or regression model should be trained. More... | |
virtual bool | train (const Ptr< TrainData > &trainData, int flags=0) |
Trains the statistical model. More... | |
virtual bool | train (InputArray samples, int layout, InputArray responses) |
Trains the statistical model. More... | |
virtual void | write (FileStorage &fs) const |
Stores algorithm parameters in a file storage. More... | |
void | write (const Ptr< FileStorage > &fs, const String &name=String()) const |
simplified API for language bindings This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
Static Public Member Functions | |
static Ptr< KNearest > | create () |
Creates the empty model. More... | |
static Ptr< KNearest > | load (const String &filepath) |
Loads and creates a serialized knearest from a file. More... | |
template<typename _Tp > | |
static Ptr< _Tp > | load (const String &filename, const String &objname=String()) |
Loads algorithm from the file. More... | |
template<typename _Tp > | |
static Ptr< _Tp > | loadFromString (const String &strModel, const String &objname=String()) |
Loads algorithm from a String. More... | |
template<typename _Tp > | |
static Ptr< _Tp > | read (const FileNode &fn) |
Reads algorithm from the file node. More... | |
template<typename _Tp > | |
static Ptr< _Tp > | train (const Ptr< TrainData > &data, int flags=0) |
Create and train model with default parameters. More... | |
Protected Member Functions | |
void | writeFormat (FileStorage &fs) const |
The class implements K-Nearest Neighbors model.
|
inherited |
Implementations of KNearest algorithm.
Enumerator | |
---|---|
BRUTE_FORCE | |
KDTREE |
|
virtualinherited |
Computes error on the training or test dataset.
data | the training data |
test | if true, the error is computed over the test subset of the data, otherwise it's computed over the training subset of the data. Please note that if you loaded a completely different dataset to evaluate already trained classifier, you will probably want not to set the test subset at all with TrainData::setTrainTestSplitRatio and specify test=false, so that the error is computed for the whole new set. Yes, this sounds a bit confusing. |
resp | the optional output responses. |
The method uses StatModel::predict to compute the error. For regression models the error is computed as RMS, for classifiers - as a percent of missclassified samples (0%-100%).
|
inlinevirtualinherited |
Clears the algorithm state.
Reimplemented in cv::FlannBasedMatcher, and cv::DescriptorMatcher.
Creates the empty model.
The static method creates empty KNearest classifier. It should be then trained using StatModel::train method.
|
virtualinherited |
Returns true if the Algorithm is empty (e.g.
in the very beginning or after unsuccessful read
Reimplemented from cv::Algorithm.
|
pure virtual |
Finds the neighbors and predicts responses for input vectors.
samples | Input samples stored by rows. It is a single-precision floating-point matrix of <number_of_samples> * k size. |
k | Number of used nearest neighbors. Should be greater than 1. |
results | Vector with results of prediction (regression or classification) for each input sample. It is a single-precision floating-point vector with <number_of_samples> elements. |
neighborResponses | Optional output values for corresponding neighbors. It is a single- precision floating-point matrix of <number_of_samples> * k size. |
dist | Optional output distances from the input vectors to the corresponding neighbors. It is a single-precision floating-point matrix of <number_of_samples> * k size. |
For each input vector (a row of the matrix samples), the method finds the k nearest neighbors. In case of regression, the predicted result is a mean value of the particular vector's neighbor responses. In case of classification, the class is determined by voting.
For each input vector, the neighbors are sorted by their distances to the vector.
In case of C++ interface you can use output pointers to empty matrices and the function will allocate memory itself.
If only a single input vector is passed, all output matrices are optional and the predicted value is returned by the method.
The function is parallelized with the TBB library.
|
pure virtual |
Algorithm type, one of KNearest::Types.
|
pure virtual |
Default number of neighbors to use in predict method.
|
virtualinherited |
Returns the algorithm string identifier.
This string is used as top level xml/yml node tag when the object is saved to a file or string.
Reimplemented in cv::AKAZE, cv::KAZE, cv::SimpleBlobDetector, cv::GFTTDetector, cv::AgastFeatureDetector, cv::FastFeatureDetector, cv::MSER, cv::ORB, cv::BRISK, and cv::Feature2D.
|
pure virtual |
Parameter for KDTree implementation.
|
pure virtual |
Whether classification or regression model should be trained.
|
pure virtualinherited |
Returns the number of variables in training samples.
|
pure virtualinherited |
Returns true if the model is classifier.
|
pure virtualinherited |
Returns true if the model is trained.
Loads and creates a serialized knearest from a file.
Use KNearest::save to serialize and store an KNearest to disk. Load the KNearest from this file again, by calling this function with the path to the file.
filepath | path to serialized KNearest |
|
inlinestaticinherited |
Loads algorithm from the file.
filename | Name of the file to read. |
objname | The optional name of the node to read (if empty, the first top-level node will be used) |
This is static template method of Algorithm. It's usage is following (in the case of SVM):
In order to make this method work, the derived class must overwrite Algorithm::read(const FileNode& fn).
References CV_Assert, cv::FileNode::empty(), cv::FileStorage::getFirstTopLevelNode(), cv::FileStorage::isOpened(), and cv::FileStorage::READ.
|
inlinestaticinherited |
Loads algorithm from a String.
strModel | The string variable containing the model you want to load. |
objname | The optional name of the node to read (if empty, the first top-level node will be used) |
This is static template method of Algorithm. It's usage is following (in the case of SVM):
References CV_WRAP, cv::FileNode::empty(), cv::FileStorage::getFirstTopLevelNode(), cv::FileStorage::MEMORY, and cv::FileStorage::READ.
|
pure virtualinherited |
Predicts response(s) for the provided sample(s)
samples | The input samples, floating-point matrix |
results | The optional output matrix of results. |
flags | The optional flags, model-dependent. See cv::ml::StatModel::Flags. |
Implemented in cv::ml::LogisticRegression, and cv::ml::EM.
|
inlinevirtualinherited |
Reads algorithm parameters from a file storage.
Reimplemented in cv::FlannBasedMatcher, cv::DescriptorMatcher, and cv::Feature2D.
|
inlinestaticinherited |
Reads algorithm from the file node.
This is static template method of Algorithm. It's usage is following (in the case of SVM):
In order to make this method work, the derived class must overwrite Algorithm::read(const FileNode& fn) and also have static create() method without parameters (or with all the optional parameters)
|
virtualinherited |
Saves the algorithm to a file.
In order to make this method work, the derived class must implement Algorithm::write(FileStorage& fs).
|
pure virtual |
Algorithm type, one of KNearest::Types.
|
pure virtual |
Default number of neighbors to use in predict method.
|
pure virtual |
Parameter for KDTree implementation.
|
pure virtual |
Whether classification or regression model should be trained.
|
virtualinherited |
Trains the statistical model.
trainData | training data that can be loaded from file using TrainData::loadFromCSV or created with TrainData::create. |
flags | optional flags, depending on the model. Some of the models can be updated with the new training samples, not completely overwritten (such as NormalBayesClassifier or ANN_MLP). |
|
virtualinherited |
Trains the statistical model.
samples | training samples |
layout | See ml::SampleTypes. |
responses | vector of responses associated with the training samples. |
|
inlinestaticinherited |
Create and train model with default parameters.
The class must implement static create()
method with no parameters or with all default parameter values
|
inlinevirtualinherited |
Stores algorithm parameters in a file storage.
Reimplemented in cv::FlannBasedMatcher, cv::DescriptorMatcher, and cv::Feature2D.
References CV_WRAP.
Referenced by cv::Feature2D::write(), and cv::DescriptorMatcher::write().
|
inherited |
simplified API for language bindings This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
protectedinherited |