https://github.com/kylesmith19091/knearestneighbourfromscratch
MNIST handwritten digits classifier, implemented from scratch using Eigen
https://github.com/kylesmith19091/knearestneighbourfromscratch
algorithm eigen-library knearest-neighbour-algorithm mnist
Last synced: 7 months ago
JSON representation
MNIST handwritten digits classifier, implemented from scratch using Eigen
- Host: GitHub
- URL: https://github.com/kylesmith19091/knearestneighbourfromscratch
- Owner: KyleSmith19091
- Created: 2021-01-01T10:02:51.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2021-01-15T10:02:10.000Z (over 4 years ago)
- Last Synced: 2025-02-02T03:41:29.710Z (8 months ago)
- Topics: algorithm, eigen-library, knearest-neighbour-algorithm, mnist
- Language: C++
- Homepage:
- Size: 10.8 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# KNearest Neighbour Algorithm
This is an implementation of the KNearest Neighbour algorithm in C++, this repo reads data from the MNIST dataset.
I added a MNIST file parser to read image data and labels. The image data is wrapped in an Image object where the pixel
data is stored in a Eigen Matrix to allow for effiecent calculation of the euclidian distance when using the algorithm.**Caution this project is dependent on the Eigen Library**
Type make to create the executable binary and to run the program
```bash
$ make
```Example Main.cpp
```c++#include "../include/DataHandler.hpp"
#include "../include/KNNAlgo.hpp"
#includeusing namespace std;
int main(){
DataHandler dh;
// False to specify that it is training dataset
dh.prepareData("path_image_file", "path_label_file",false);
// True to indicate that data is test dataset
dh.prepareData("path_image_file_test", "path_label_file_test",true);double count = 0;
double iterNum = 10;
KNNAlgo knn;for(int i = 0; i < iterNum; i++){
bool eval = knn.Classify(dh.get_Image_Data(), dh.get_Test_Image_Data()[i]);
if(eval) count++;
}cout << "Accuracy: " << (count/iterNum*100) << "%\n";
return 0;
}```
## What I learned
- KNearest Neighbour Algorithm
- Parsing MNIST file
- Eigen Matrix Library