RapidLib  v2.2.0
A simple library for interactive machine learning
knnClassification.h
Go to the documentation of this file.
1 //
2 // knnClassification.h
3 // RapidLib
4 //
5 // Created by mzed on 05/09/2016.
6 // Copyright © 2016 Goldsmiths. All rights reserved.
7 //
8 
9 #ifndef KNNCLASSIFICATION_H
10 #define KNNCLASSIFICATION_H
11 
12 #include <vector>
13 #include "baseModel.h"
14 
15 #ifndef EMSCRIPTEN
16 #include "../dependencies/json/json.h"
17 #endif
18 
20 template<typename T>
21 class knnClassification final : public baseModel<T>
22 {
23  public:
30  knnClassification(const int &num_inputs,
31  const std::vector<size_t> &which_inputs,
32  const std::vector<trainingExampleTemplate<T> > &trainingSet,
33  const int k);
34 
36 
41  void addNeighbour(const int classNum, const std::vector<T>& features);
42 
47  T run(const std::vector<T>& inputVector) override;
48 
54  void train(const std::vector<trainingExampleTemplate<T> >& trainingSet) override;
55 
61  void train(const std::vector<trainingExampleTemplate<T>>& trainingSet, const std::size_t whichOutput) override;
62 
64  void reset() override;
65 
69  size_t getNumInputs() const override;
70 
74  std::vector<size_t> getWhichInputs() const override;
75 
77  int getK() const;
78 
82  void setK(int newK);
83 
84 #ifndef EMSCRIPTEN
88  void getJSONDescription(Json::Value& currentModel) override;
89 #endif
90 
91  private:
92  int numInputs {};
93  std::vector<size_t> whichInputs {};
94  std::size_t whichOutput {};
95  std::vector<trainingExampleTemplate<T>> neighbours {};
96  int desiredK {}; //K that user asked for might be limited but number of examples
97  int currentK {}; //K minimum of desiredK or neighbours.size()
98  inline void updateK();
99 };
100 
101 #endif
Definition: baseModel.h:42
Definition: knnClassification.h:22
std::vector< size_t > getWhichInputs() const override
Definition: knnClassification.cpp:46
void getJSONDescription(Json::Value &currentModel) override
Definition: knnClassification.cpp:179
void reset() override
Definition: knnClassification.cpp:35
int getK() const
Definition: knnClassification.cpp:51
~knnClassification()
Definition: knnClassification.cpp:33
void setK(int newK)
Definition: knnClassification.cpp:61
size_t getNumInputs() const override
Definition: knnClassification.cpp:40
void addNeighbour(const int classNum, const std::vector< T > &features)
Definition: knnClassification.cpp:68
T run(const std::vector< T > &inputVector) override
Definition: knnClassification.cpp:94
void train(const std::vector< trainingExampleTemplate< T > > &trainingSet) override
knnClassification(const int &num_inputs, const std::vector< size_t > &which_inputs, const std::vector< trainingExampleTemplate< T > > &trainingSet, const int k)
Definition: knnClassification.cpp:20
Definition: trainingExample.h:19