Darwin  1.10(beta)
drwnCompositeClassifier.h
1 /******************************************************************************
2 ** DARWIN: A FRAMEWORK FOR MACHINE LEARNING RESEARCH AND DEVELOPMENT
3 ** Distributed under the terms of the BSD license (see the LICENSE file)
4 ** Copyright (c) 2007-2017, Stephen Gould
5 ** All rights reserved.
6 **
7 ******************************************************************************
8 ** FILENAME: drwnCompositeClassifier.h
9 ** AUTHOR(S): Stephen Gould <stephen.gould@anu.edu.au>
10 **
11 *****************************************************************************/
12 
13 #pragma once
14 
15 #include <cstdlib>
16 #include <vector>
17 
18 #include "drwnBase.h"
19 #include "drwnClassifier.h"
20 #include "drwnMultiClassLogistic.h"
21 #include "drwnFeatureWhitener.h"
22 
23 using namespace std;
24 
25 // drwnCompositeClassifierMethod ---------------------------------------------
26 
27 typedef enum _drwnCompositeClassifierMethod {
28  DRWN_ONE_VS_ALL = 0,
29  DRWN_ONE_VS_ONE
30 } drwnCompositeClassifierMethod;
31 
32 // drwnCompositeClassifier ---------------------------------------------------
66 
68  public:
69  // default meta-parameters
70  static string BASE_CLASSIFIER;
71  static drwnCompositeClassifierMethod METHOD;
72 
73  protected:
74  // actual meta-parameters
75  string _baseClassifier;
76  drwnCompositeClassifierMethod _method;
77 
79  vector<drwnClassifier *> _binaryClassifiers;
84 
85  public:
89  drwnCompositeClassifier(unsigned n, unsigned k = 2);
93 
94  // access functions
95  virtual const char *type() const { return "drwnCompositeClassifier"; }
96  virtual drwnCompositeClassifier *clone() const { return new drwnCompositeClassifier(*this); }
97 
98  // initialization
99  virtual void initialize(unsigned n, unsigned k = 2);
100 
101  // i/o
102  virtual bool save(drwnXMLNode& node) const;
103  virtual bool load(drwnXMLNode& node);
104 
105  // training
106  using drwnClassifier::train;
107  virtual double train(const drwnClassifierDataset& dataset);
108 
109  // evaluation (log-probability)
111  virtual void getClassScores(const vector<double>& features,
112  vector<double>& outputScores) const;
113 
114  protected:
115 
116 };
117 
virtual double train(const drwnClassifierDataset &dataset)=0
train the parameters of the classifier from a drwnClassifierDataset object
drwnTMultiClassLogistic< drwnBiasJointFeatureMap > _calibrationWeights
calibration weights
Definition: drwnCompositeClassifier.h:83
static drwnCompositeClassifierMethod METHOD
composition method
Definition: drwnCompositeClassifier.h:71
vector< drwnClassifier * > _binaryClassifiers
binary classifiers
Definition: drwnCompositeClassifier.h:79
Implements a multi-class classifier by combining binary classifiers.
Definition: drwnCompositeClassifier.h:67
Whitens (zero mean, unit variance) feature vector (see also drwnPCA).
Definition: drwnFeatureWhitener.h:55
drwnCompositeClassifierMethod _method
composition method
Definition: drwnCompositeClassifier.h:76
drwnFeatureWhitener _featureWhitener
feature whitener for output of binary classifiers
Definition: drwnCompositeClassifier.h:81
Implements the interface for a generic machine learning classifier.
Definition: drwnClassifier.h:31
virtual const char * type() const
returns object type as a string (e.g., Foo::type() { return "Foo"; })
Definition: drwnCompositeClassifier.h:95
Implements a cacheable dataset containing feature vectors, labels and optional weights.
Definition: drwnDataset.h:43
virtual void getClassScores(const vector< double > &features, vector< double > &outputScores) const =0
compute the unnormalized log-probability for a single feature vector
string _baseClassifier
the base classifier (e.g., drwnBoostedClassifier)
Definition: drwnCompositeClassifier.h:75
static string BASE_CLASSIFIER
the base classifier (e.g., drwnBoostedClassifier)
Definition: drwnCompositeClassifier.h:70
virtual drwnCompositeClassifier * clone() const
returns a copy of the class usually implemented as virtual Foo* clone() { return new Foo(*this); } ...
Definition: drwnCompositeClassifier.h:96