A python based Machine-Learning program based on SVM (support vector machine) algorithm, to recognize hand written digits.
Handwritten character recognition (HWCR) is the ability of a computer to receive and interpret intelligible handwritten input from source such as paper documents, photographs, touchscreens and other devices. There are many devices now can take handwriting as an input such as smartphones, tablets and PDA to a touch screen through a stylus or finger. This is useful as it allows the user to quickly write down number and text to the devices. In this internship, I have made a neural network that will read and recognise the digits based on MNIST digit dataset. I have used one of the widely used algorithms, SVM (Support Vector Machine).
- Support Vector Machine gives a high accuracy of 97.91%, whereas other Machine Learning algorithm had lesser accuracy
- Support vector machines are naturally resistant to overfitting and work very well when identifying boundary regions.
- Robust to noises.
- Easier to implement, personally I feel it is easier for me to implement SVM classifier.
- The advantage of SVM is that once a boundary is established, most of the training data is redundant. All it needs is a core set of points which can help identify and set the boundary.
- Unzip the folder. The four MNIST data file must be downloaded in the folder SVM/MNIST_Dataset_Loader/dataset/. The link for downloading the MNIST data is in dataset folder.
- Navigate to: Handwritten-Digit-Recognition/SVM/ and run the following python command >>python svm.py
- Once the execution begins, the program loads the MNIST data which includes both training and testing data. It prepares the classifier and also plots a confusion matrix, the training time can be slow, please be patient.
- Apart from the confusion matrix it also tells us about predicted labels for test images and accuracy of classifier on test images.
- In the end, it shows the Test Images with Original and Predicted Labels.