RapidLib  v2.2.0
A simple library for interactive machine learning
knnClassification.h
Go to the documentation of this file.
1 
10 #ifndef KNNCLASSIFICATION_H
11 #define KNNCLASSIFICATION_H
12 
13 #include <vector>
14 #include "baseModel.h"
15 
16 #ifndef EMSCRIPTEN
17 #include "../dependencies/json/json.h"
18 #endif
19 
21 template<typename T>
22 class knnClassification final : public baseModel<T>
23 {
24  public:
31  knnClassification(const int &num_inputs,
32  const std::vector<size_t> &which_inputs,
33  const std::vector<trainingExampleTemplate<T> > &trainingSet,
34  const int k);
35 
37 
42  void addNeighbour(const int classNum, const std::vector<T>& features);
43 
48  T run(const std::vector<T>& inputVector) const override;
49 
55  void train(const std::vector<trainingExampleTemplate<T> >& trainingSet) override;
56 
62  void train(const std::vector<trainingExampleTemplate<T>>& trainingSet, const std::size_t whichOutput) override;
63 
65  void reset() override;
66 
70  size_t getNumInputs() const override;
71 
75  std::vector<size_t> getWhichInputs() const override;
76 
78  int getK() const;
79 
83  void setK(int newK);
84 
85 #ifndef EMSCRIPTEN
89  void getJSONDescription(Json::Value& currentModel) override;
90 #endif
91 
92  private:
93  int numInputs {};
94  std::vector<size_t> whichInputs {};
95  std::size_t whichOutput {};
96  std::vector<trainingExampleTemplate<T>> neighbours {};
97  int desiredK {}; //K that user asked for might be limited but number of examples
98  int currentK {}; //K minimum of desiredK or neighbours.size()
99  inline void updateK();
100 };
101 
102 #endif
Definition: baseModel.h:42
Definition: knnClassification.h:23
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
T run(const std::vector< T > &inputVector) const override
Definition: knnClassification.cpp:94
size_t getNumInputs() const override
Definition: knnClassification.cpp:40
void addNeighbour(const int classNum, const std::vector< T > &features)
Definition: knnClassification.cpp:68
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