Skip to content

A comprehensive implementation and analysis of handwritten digit recognition using multiple neural network architectures on the MNIST dataset. Features basic MLP, optimized feature-selected model, and deep CNN approaches with detailed performance comparisons and visualizations.

License

Notifications You must be signed in to change notification settings

ChanMeng666/mnist-handwritten-digit-recognition-project

Repository files navigation

MNIST Neural Network Analysis


Features

  • Multiple Model Architectures: Implementation of basic MLP, optimized feature-selected, and deep CNN models
  • Comprehensive Analysis: Detailed data exploration, visualization, and performance metrics
  • Advanced Techniques: Feature importance analysis, sensitivity testing, and error analysis
  • Performance Optimization: Model comparison and trade-off analysis
  • Interactive Visualizations: Detailed charts and graphs for model behavior understanding
  • Extensive Documentation: Step-by-step explanations and implementation details

Model Performance

Model Accuracy Prediction Time Parameters
Basic MLP 99.05% 0.621s 407,050
Optimized 97.86% 0.528s 84,618
Deep CNN 99.71% 4.869s 1,015,530

Technologies Used

Python TensorFlow Keras NumPy Pandas Matplotlib scikit-learn

Key Features in Detail

1. Data Analysis & Preprocessing

  • Extensive MNIST dataset exploration
  • Class distribution analysis
  • Feature importance visualization
  • Robust preprocessing pipeline

2. Model Implementations

  • Basic MLP Model

    • Simple yet effective architecture
    • Multiple neuron configurations tested
    • Baseline performance establishment
  • Optimized Model

    • Feature selection optimization
    • Resource-efficient implementation
    • Fast prediction times
  • Deep CNN Model

    • Advanced architectural design
    • State-of-the-art accuracy
    • Comprehensive performance analysis

3. Analysis Tools

  • Detailed performance metrics
  • Sensitivity analysis
  • Error visualization
  • Model behavior exploration

Getting Started

Prerequisites

python>=3.7
tensorflow>=2.0
numpy>=1.19
pandas>=1.1
matplotlib>=3.3
scikit-learn>=0.24

Installation

# Clone the repository
git clone https://github.com/ChanMeng666/mnist-handwritten-digit-recognition-project.git

# Navigate to project directory
cd mnist-handwritten-digit-recognition-project

# Install required packages
pip install -r requirements.txt

Usage

# Run the Jupyter notebook
jupyter notebook hand-written-digit-recognition_final.ipynb

Results Visualization

The project includes extensive visualizations of:

  • Model performance comparisons
  • Feature importance maps
  • Error analysis
  • Sensitivity studies
  • Training progression

Future Improvements

  • Implementation of additional architectures
  • Enhanced data augmentation techniques
  • Model compression exploration
  • Real-time prediction capabilities
  • Transfer learning experiments

Contributing

Contributions are welcome! Please feel free to submit pull requests.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Author

Chan Meng

Acknowledgments

  • The MNIST database creators
  • TensorFlow and Keras teams
  • Scientific Python community
  • All contributors and supporters

Contact

Chan Meng - ChanMeng666@outlook.com

Project Link: https://github.com/ChanMeng666/mnist-handwritten-digit-recognition-project

About

A comprehensive implementation and analysis of handwritten digit recognition using multiple neural network architectures on the MNIST dataset. Features basic MLP, optimized feature-selected model, and deep CNN approaches with detailed performance comparisons and visualizations.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

No packages published