RapidLib  v2.1.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 : public baseModel<T> {
22 
23 public:
30  knnClassification(const int &num_inputs,
31  const std::vector<int> &which_inputs,
32  const std::vector<trainingExampleTemplate<T> > &trainingSet,
33  const int k);
35 
40  void addNeighbour(const int &classNum, const std::vector<T> &features);
41 
46  T run(const std::vector<T> &inputVector);
47 
53  void train(const std::vector<trainingExampleTemplate<T> > &trainingSet);
54 
56  void reset();
57 
61  int getNumInputs() const;
62 
66  std::vector<int> getWhichInputs() const;
67 
69  int getK() const;
73  void setK(int newK);
74 
75 #ifndef EMSCRIPTEN
76 
79  void getJSONDescription(Json::Value &currentModel);
80 #endif
81 
82 private:
83  int numInputs;
84  std::vector<int> whichInputs;
85  std::vector<trainingExampleTemplate<T>> neighbours;
86  int desiredK; //K that user asked for might be limited but number of examples
87  int currentK; //K minimum of desiredK or neighbours.size()
88  inline void updateK();
89  std::pair<int, T>* nearestNeighbours;
90 };
91 
92 #endif
93 
Definition: trainingExample.h:18
void setK(int newK)
Definition: knnClassification.cpp:63
T run(const std::vector< T > &inputVector)
Definition: knnClassification.cpp:85
~knnClassification()
Definition: knnClassification.cpp:31
void getJSONDescription(Json::Value &currentModel)
Definition: knnClassification.cpp:153
std::vector< int > getWhichInputs() const
Definition: knnClassification.cpp:46
Definition: knnClassification.h:21
void train(const std::vector< trainingExampleTemplate< T > > &trainingSet)
Definition: knnClassification.cpp:78
int getNumInputs() const
Definition: knnClassification.cpp:41
knnClassification(const int &num_inputs, const std::vector< int > &which_inputs, const std::vector< trainingExampleTemplate< T > > &trainingSet, const int k)
Definition: knnClassification.cpp:20
Definition: baseModel.h:23
void addNeighbour(const int &classNum, const std::vector< T > &features)
Definition: knnClassification.cpp:69
void reset()
Definition: knnClassification.cpp:36
int getK() const
Definition: knnClassification.cpp:51