Darwin  1.10(beta)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
drwnClassifier.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-2015, Stephen Gould
5 ** All rights reserved.
6 **
7 ******************************************************************************
8 ** FILENAME: drwnClassifier.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 "drwnDataset.h"
20 
21 using namespace std;
22 
23 // drwnClassifier -----------------------------------------------------------
30 
32  protected:
33  int _nFeatures;
34  int _nClasses;
35  bool _bValid;
36 
37  public:
41  drwnClassifier(unsigned n, unsigned k = 2);
44  virtual ~drwnClassifier() { /* do nothing */ }
45 
46  // access functions
48  int numFeatures() const { return _nFeatures; }
50  int numClasses() const { return _nClasses; }
52  virtual bool valid() const { return _bValid; }
53 
54  // initialization
56  virtual void initialize(unsigned n, unsigned k = 2);
57 
58  // i/o
59  virtual drwnClassifier *clone() const = 0;
60  virtual bool save(drwnXMLNode& xml) const;
61  virtual bool load(drwnXMLNode& xml);
62 
63  // training
65  virtual double train(const drwnClassifierDataset& dataset) = 0;
67  virtual double train(const vector<vector<double> >& features,
68  const vector<int>& targets);
71  virtual double train(const vector<vector<double> >& features,
72  const vector<int>& targets, const vector<double>& weights);
74  virtual double train(const char *filename);
75 
76  // evaluation (log-probability unnormalized)
78  virtual void getClassScores(const vector<double>& features,
79  vector<double>& outputScores) const = 0;
81  virtual void getClassScores(const vector<vector<double> >& features,
82  vector<vector<double> >& outputScores) const;
83 
84  // evaluation (normalized marginals)
86  virtual void getClassMarginals(const vector<double>& features,
87  vector<double>& outputMarginals) const;
89  virtual void getClassMarginals(const vector<vector<double> >& features,
90  vector<vector<double> >& outputMarginals) const;
91 
92  // evaluation (classification)
94  virtual int getClassification(const vector<double>& features) const;
96  virtual void getClassifications(const vector<vector<double> >& features,
97  vector<int>& outputLabels) const;
98 };
99 
100 // drwnClassifierFactory ----------------------------------------------------
103 
104 template <>
106  static void staticRegistration();
107 };
108 
Some classes may provide default factory registration (e.g., built-in classes such as drwnClassifier ...
Definition: drwnFactory.h:32
Provides an abstract interface for dynamic properties.
Definition: drwnProperties.h:338
bool _bValid
true if the classifier has been trained or loaded
Definition: drwnClassifier.h:35
Templated factory for creating or cloning objects for a particular base class.
Definition: drwnFactory.h:59
virtual bool valid() const
returns true if the classifier is valid (has been initialized and trained)
Definition: drwnClassifier.h:52
int _nFeatures
number of features
Definition: drwnClassifier.h:33
int _nClasses
number of classes
Definition: drwnClassifier.h:34
int numClasses() const
returns the number of classes predicted by the classifier object
Definition: drwnClassifier.h:50
int numFeatures() const
returns the number of features expected by the classifier object
Definition: drwnClassifier.h:48
Implements the interface for a generic machine learning classifier.
Definition: drwnClassifier.h:31
Implements a cacheable dataset containing feature vectors, labels and optional weights.
Definition: drwnDataset.h:43
standard Darwin object interface (cloneable and writeable)
Definition: drwnInterfaces.h:72