A small project comparing various machine learning techniques for recognizing handwritten digits, using the MNIST dataset.
Install this project using poetry
petry install
This project is based on this exercise from Kaggle.com
To run this project, you need to download the data (train.csv) from this exercise and put it under ./data directory
This package offers several executable scripts:
fit- train all models and save them in the./modelsdirectoryscore- calculate accuracy of the modelsconfusion_matrix- calculate confusion matrices for the modelsapp- run the drawing app allowing to test the models
The main script executes fit, score, and confusion_matrix scripts in sequence
To run the script using poetry run:
poetry run [script]
The drawing app allows the user to select a model, draw a digit and make a prediction with selected model.
Run the app with poetry run app
After running the app, select a model with the Model dropdown, draw a digit and hit Predict button to use the model
to predict the digit. You can update the drawing after the prediction or select a different model to make another
prediction.
Use the Clear button to clear the canvas and the prediction
Currently supported models are:
- Convolutional Neural Network (from Keras)
- Naive Bayes (from sklearn)
- Decision Tree (from sklearn)
- Random Forest (from sklearn)
- K Nearest Neighbours (k=5, from sklearn)
- Support Vector (from sklearn)