Machine learning algorithms in C++
Public Types | Public Member Functions | Private Member Functions | Private Attributes
KNN Class Reference

k-nearest neighbors algorithm More...

#include <KNN.hpp>

Collaboration diagram for KNN:

Public Types

enum  Distance { HAMMING, EUCLIDEAN }
 

Public Member Functions

int getK () const
 
void setK (int k)
 
const vector< vector< double > > & getData () const
 
int getYColumn () const
 
 KNN (vector< vector< double >> data, int yColumn, int k=1, Distance distance=EUCLIDEAN)
 k-nearest neighbors algorithm, able to do regression and classification More...
 
double euclidean (vector< double > a, vector< double > b)
 Calculates the Euclidean distance between two vectors. More...
 
double hamming (vector< double > a, vector< double > b)
 Calculates the Hamming distance between two vectors. More...
 
double regression (const vector< double > &testie)
 Perform regression using. More...
 
double classify (const vector< double > &testie)
 
vector< double > classify (const vector< vector< double >> &test, bool verbose=false)
 
vector< double > regression (const vector< vector< double >> &test, bool verbose=false)
 
Distance getDistance () const
 
void setDistance (Distance distance)
 

Private Member Functions

void getKNN (int *chosen_indices, const vector< double > &testie)
 Finds the k-nearest neighbors of a data element. More...
 

Private Attributes

vector< vector< double > > data
 
int yColumn
 
int k
 
Distance distance
 

Detailed Description

k-nearest neighbors algorithm

Definition at line 22 of file KNN.hpp.

Member Enumeration Documentation

◆ Distance

Enumerator
HAMMING 
EUCLIDEAN 

Definition at line 24 of file KNN.hpp.

Constructor & Destructor Documentation

◆ KNN()

KNN::KNN ( vector< vector< double >>  data,
int  yColumn,
int  k = 1,
Distance  distance = EUCLIDEAN 
)
inlineexplicit

k-nearest neighbors algorithm, able to do regression and classification

Parameters
dataa dataset, where each vector represents a data element
yColumnwhich column of the dataset is the dependent variable
knumber of nearest neighbors

Definition at line 98 of file KNN.hpp.

Member Function Documentation

◆ classify() [1/2]

double KNN::classify ( const vector< double > &  testie)
inline

Definition at line 168 of file KNN.hpp.

◆ classify() [2/2]

vector<double> KNN::classify ( const vector< vector< double >> &  test,
bool  verbose = false 
)
inline

Definition at line 203 of file KNN.hpp.

◆ euclidean()

double KNN::euclidean ( vector< double >  a,
vector< double >  b 
)
inline

Calculates the Euclidean distance between two vectors.

Parameters
afirst vector
bsecond vector
Returns
Euclidean distance between a and b

Definition at line 120 of file KNN.hpp.

◆ getData()

const vector<vector<double> >& KNN::getData ( ) const
inline

Definition at line 86 of file KNN.hpp.

◆ getDistance()

Distance KNN::getDistance ( ) const
inline

Definition at line 236 of file KNN.hpp.

◆ getK()

int KNN::getK ( ) const
inline

Definition at line 78 of file KNN.hpp.

◆ getKNN()

void KNN::getKNN ( int *  chosen_indices,
const vector< double > &  testie 
)
inlineprivate

Finds the k-nearest neighbors of a data element.

Parameters
chosen_indicesinteger array that will keep the indices of the k-nearest neighbors
testiea vector of real values representing a data element

Definition at line 34 of file KNN.hpp.

◆ getYColumn()

int KNN::getYColumn ( ) const
inline

Definition at line 90 of file KNN.hpp.

◆ hamming()

double KNN::hamming ( vector< double >  a,
vector< double >  b 
)
inline

Calculates the Hamming distance between two vectors.

Parameters
afirst vector
bsecond vector
Returns
Hamming distance between a and b

Definition at line 136 of file KNN.hpp.

◆ regression() [1/2]

double KNN::regression ( const vector< double > &  testie)
inline

Perform regression using.

Parameters
testie
Returns

Definition at line 151 of file KNN.hpp.

◆ regression() [2/2]

vector<double> KNN::regression ( const vector< vector< double >> &  test,
bool  verbose = false 
)
inline

Definition at line 223 of file KNN.hpp.

◆ setDistance()

void KNN::setDistance ( Distance  distance)
inline

Definition at line 240 of file KNN.hpp.

◆ setK()

void KNN::setK ( int  k)
inline

Definition at line 82 of file KNN.hpp.

Field Documentation

◆ data

vector<vector<double> > KNN::data
private

Definition at line 26 of file KNN.hpp.

◆ distance

Distance KNN::distance
private

Definition at line 29 of file KNN.hpp.

◆ k

int KNN::k
private

Definition at line 27 of file KNN.hpp.

◆ yColumn

int KNN::yColumn
private

Definition at line 27 of file KNN.hpp.


The documentation for this class was generated from the following file: