Feature Selection Toolbox FST4
UTIA · Czech Academy of Sciences
Loading...
Searching...
No Matches
FST::Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > Class Template Referenceabstract

abstract class, defines interface for classifier implementations (mainly to be used in wrappers) More...

#include <classifier.hpp>

Inheritance diagram for FST::Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR >:
FST::Clonable FST::Clonable_Impl< Classifier_Logistic_Regression, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > > FST::Clonable_Impl< Classifier_Multinomial_NaiveBayes, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > > FST::Clonable_Impl< Classifier_Normal_Bayes, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > > FST::Clonable_Impl< Classifier_LIBSVM, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, CLONE_TO_STATELESS, CLONE_INHERIT, CLONE_WEAK > FST::Clonable_Impl< Classifier_Extern< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > > FST::Clonable_Impl< Classifier_LDA< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > > FST::Clonable_Impl< Classifier_LIBSVM< RETURNTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, CLONE_TO_STATELESS, CLONE_INHERIT, CLONE_WEAK > FST::Clonable_Impl< Classifier_Linear_SVM< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > > FST::Clonable_Impl< Classifier_Logistic_Regression< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > > FST::Clonable_Impl< Classifier_Multinomial_NaiveBayes< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > > FST::Clonable_Impl< Classifier_Normal_Bayes< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > > FST::Clonable_Impl< Classifier_RBF_SVM< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > > FST::Clonable_Impl< Classifier_Random_Forest< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > > FST::Clonable_Impl< Classifier_kNN< RETURNTYPE, DATATYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR, DISTANCE >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >

Public Types

typedef std::shared_ptr< DATAACCESSOR > PDataAccessor
 shared pointer to the data accessor supplying train/test blocks
typedef std::shared_ptr< SUBSET > const PSubset
 shared pointer to the (fixed, non-reassignable) feature subset being evaluated
typedef DATAACCESSOR::PPattern PPattern
 one data sample as exposed by DATAACCESSOR (a raw pointer to its feature vector)

Public Member Functions

virtual bool classify (DIMTYPE &cls, const PPattern &pattern)=0
virtual bool train (const PDataAccessor da, const PSubset sub)=0
 learns from designated training part of data
virtual bool test (RETURNTYPE &result, const PDataAccessor da)
virtual bool classify_scores (std::vector< RETURNTYPE > &scores, const PPattern &pattern)
virtual bool test_confusion (std::vector< RETURNTYPE > &confusion, DIMTYPE &classes, const PDataAccessor da)
virtual bool test_scores (std::vector< std::pair< RETURNTYPE, DIMTYPE > > &scores, const PDataAccessor da)
virtual bool test_scores_matrix (std::vector< RETURNTYPE > &scores, std::vector< DIMTYPE > &labels, DIMTYPE &classes, const PDataAccessor da)
virtual bool test_metric (RETURNTYPE &result, const PDataAccessor da, const Metric_Spec< RETURNTYPE > &spec)
Classifier * clone () const override=0
Classifier * sharing_clone () const override
Classifier * stateless_clone () const override
Public Member Functions inherited from FST::Clonable
bool is_clone () const
bool is_sharing () const
 true if this instance is a sharing_clone() result (referencing, not owning, the source's structures)
bool is_sharing_clone () const
 true if this instance is BOTH a clone and sharing – i.e. specifically a sharing_clone() result, not a clone()/stateless_clone() one
virtual std::ostream & print (std::ostream &os) const
 writes a human-readable identification of the object; base default writes nothing

Additional Inherited Members

Protected Member Functions inherited from FST::Clonable
void set_cloned (const bool cloned=true)
 marks/unmarks this instance as a clone; call from clone()/stateless_clone() overrides (Clonable_Impl does this automatically)
void set_sharing (const bool sharing=true)
 marks/unmarks this instance as sharing (see is_sharing())
void set_sharing_cloned (const bool cloned=true, const bool sharing=true)
 sets both flags at once; call from sharing_clone() overrides (Clonable_Impl does this automatically)

Detailed Description

template<class RETURNTYPE, typename DIMTYPE, class SUBSET, class DATAACCESSOR>
class FST::Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR >

abstract class, defines interface for classifier implementations (mainly to be used in wrappers)

Note
Lifecycle contract. A classifier must be trained before any of the test*() methods or classify() is called: train() learns the model restricted to the features selected in sub, from the TRAIN blocks of da. The test*() methods then read the TEST blocks of the accessor passed to them, which must expose the same features in the same order as the accessor train() was given (in practice the same accessor instance, or a sharing clone of it). Passing a subset of different content requires a new train() call. Instances are not thread-safe; threaded searches use clone() to give each thread its own copy.

Member Function Documentation

◆ classify()

template<class RETURNTYPE, typename DIMTYPE, class SUBSET, class DATAACCESSOR>
virtual bool FST::Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR >::classify ( DIMTYPE & cls,
const PPattern & pattern )
pure virtual

◆ classify_scores()

◆ clone()

template<class RETURNTYPE, typename DIMTYPE, class SUBSET, class DATAACCESSOR>
Classifier * FST::Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR >::clone ( ) const
overridepure virtual

create 1:1 independent clone of the current object. The caller owns the returned object. Families that cannot support a given clone kind implement it to throw fst_error; Clonable_Impl's CLONE_INHERIT slot defers to such a body.

Implements FST::Clonable.

Implemented in FST::Clonable_Impl< Classifier_Extern< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_kNN< RETURNTYPE, DATATYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR, DISTANCE >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_LDA< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_LIBSVM, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, CLONE_TO_STATELESS, CLONE_INHERIT, CLONE_WEAK >, FST::Clonable_Impl< Classifier_LIBSVM< RETURNTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, CLONE_TO_STATELESS, CLONE_INHERIT, CLONE_WEAK >, FST::Clonable_Impl< Classifier_Linear_SVM< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_Logistic_Regression, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_Logistic_Regression< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_Multinomial_NaiveBayes, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_Multinomial_NaiveBayes< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_Normal_Bayes, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_Normal_Bayes< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_Random_Forest< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, and FST::Clonable_Impl< Classifier_RBF_SVM< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >.

◆ sharing_clone()

template<class RETURNTYPE, typename DIMTYPE, class SUBSET, class DATAACCESSOR>
Classifier * FST::Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR >::sharing_clone ( ) const
inlineoverridevirtual

create equivalent clone of the current object, permitting read-only access to structures in the source object (allows referencing instead of copying of large memory structures). may be faster and save space but requires more caution with respect to concurrency Use example: Data_Accessor memory data representation cloning

Implements FST::Clonable.

Reimplemented in FST::Clonable_Impl< Classifier_Extern< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_kNN< RETURNTYPE, DATATYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR, DISTANCE >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_LDA< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_LIBSVM, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, CLONE_TO_STATELESS, CLONE_INHERIT, CLONE_WEAK >, FST::Clonable_Impl< Classifier_LIBSVM< RETURNTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, CLONE_TO_STATELESS, CLONE_INHERIT, CLONE_WEAK >, FST::Clonable_Impl< Classifier_Linear_SVM< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_Logistic_Regression, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_Logistic_Regression< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_Multinomial_NaiveBayes, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_Multinomial_NaiveBayes< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_Normal_Bayes, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_Normal_Bayes< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_Random_Forest< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, and FST::Clonable_Impl< Classifier_RBF_SVM< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >.

◆ stateless_clone()

template<class RETURNTYPE, typename DIMTYPE, class SUBSET, class DATAACCESSOR>
Classifier * FST::Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR >::stateless_clone ( ) const
inlineoverridevirtual

create clone of the current object, ignoring internal temporary structures to save speed. Does not replicate exact object state. The clone must be used carefully in a way that ensures internal structure re-initialization Use example: Data_Splitter cloning or Classifier_LIBSVM cloning due to inability to clone external structures defined in LibSVM

Implements FST::Clonable.

Reimplemented in FST::Clonable_Impl< Classifier_Extern< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_kNN< RETURNTYPE, DATATYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR, DISTANCE >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_LDA< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_LIBSVM, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, CLONE_TO_STATELESS, CLONE_INHERIT, CLONE_WEAK >, FST::Clonable_Impl< Classifier_LIBSVM< RETURNTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, CLONE_TO_STATELESS, CLONE_INHERIT, CLONE_WEAK >, FST::Clonable_Impl< Classifier_Linear_SVM< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_Logistic_Regression, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_Logistic_Regression< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_Multinomial_NaiveBayes, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_Multinomial_NaiveBayes< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_Normal_Bayes, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_Normal_Bayes< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, FST::Clonable_Impl< Classifier_Random_Forest< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >, and FST::Clonable_Impl< Classifier_RBF_SVM< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR > >.

◆ test()

template<class RETURNTYPE, typename DIMTYPE, class SUBSET, class DATAACCESSOR>
bool FST::Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR >::test ( RETURNTYPE & result,
const PDataAccessor da )
virtual

Estimates accuracy (fraction of correctly classified test patterns) using the designated test data. The default implementation is the canonical accuracy loop over the virtual classify(); classifiers needing extra preconditions or a batched evaluation override it (Classifier_Normal_Bayes, Classifier_Multinomial_NaiveBayes, Classifier_SVM, Classifier_Extern). Returns false if the test part is empty or classify() failed.

Reimplemented in FST::Classifier_Extern< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, FST::Classifier_LIBSVM< RETURNTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, FST::Classifier_Multinomial_NaiveBayes< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, and FST::Classifier_Normal_Bayes< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >.

◆ test_confusion()

template<class RETURNTYPE, typename DIMTYPE, class SUBSET, class DATAACCESSOR>
bool FST::Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR >::test_confusion ( std::vector< RETURNTYPE > & confusion,
DIMTYPE & classes,
const PDataAccessor da )
virtual

assembles the classes*classes confusion matrix (row-major, row = true class) over the designated test data. Default implementation replicates the canonical test() loop via the virtual classify(); concrete classifiers override only to preserve special conventions (see Classifier_Multinomial_NaiveBayes).

Reimplemented in FST::Classifier_Extern< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >, and FST::Classifier_Multinomial_NaiveBayes< RETURNTYPE, DATATYPE, REALTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >.

◆ test_metric()

template<class RETURNTYPE, typename DIMTYPE, class SUBSET, class DATAACCESSOR>
bool FST::Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR >::test_metric ( RETURNTYPE & result,
const PDataAccessor da,
const Metric_Spec< RETURNTYPE > & spec )
virtual

evaluates the designated test data under the given metric. The default spec (plain accuracy, no class weights) is served directly by test(); other metrics dispatch through test_confusion()/test_scores(). Returns false when the metric is undefined on this test part (callers skip the split).

◆ test_scores()

template<class RETURNTYPE, typename DIMTYPE, class SUBSET, class DATAACCESSOR>
bool FST::Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR >::test_scores ( std::vector< std::pair< RETURNTYPE, DIMTYPE > > & scores,
const PDataAccessor da )
virtual

collects per-sample (positive-class score, true class) pairs over the designated test data (two-class data only; positive class = class index 1); the enumeration order (class-major, block order) is deterministic. Default implementation uses the virtual classify_scores().

◆ test_scores_matrix()

template<class RETURNTYPE, typename DIMTYPE, class SUBSET, class DATAACCESSOR>
bool FST::Classifier< RETURNTYPE, DIMTYPE, SUBSET, DATAACCESSOR >::test_scores_matrix ( std::vector< RETURNTYPE > & scores,
std::vector< DIMTYPE > & labels,
DIMTYPE & classes,
const PDataAccessor da )
virtual

collects the row-major samples x classes score matrix and true labels over the designated test data (any class count; same deterministic class-major, block-order enumeration as test_scores). Default implementation uses the virtual classify_scores(). Feeds the one-vs-rest macro AUC.

◆ train()


The documentation for this class was generated from the following file:
Copyright © 2000–present ÚTIA, Institute of Information Theory and Automation of the Czech Academy of Sciences · Contacts · This site sets no cookies and uses no analytics.