This project is an exercise in implementing various machine-learning and deep-learning algorithms from scratch in C++. The goal is to understand the internals of these algorithms, how they work, and how to optimize them, while honing skills in C++.
- Linear Regression: Implemented. A simple yet powerful algorithm used for predicting a continuous target variable.
- Decision Trees: Not Implemented. An intuitive algorithm that makes decisions based on certain conditions.
- k-Nearest Neighbors: Not Implemented. An algorithm that classifies a data point based on how its neighbors are classified.
- Support Vector Machines (SVM): Not Implemented. A powerful classification algorithm that finds the optimal hyperplane that separates different classes.
- K-Means Clustering: Not Implemented. An unsupervised algorithm that groups similar data points together.
- Neural Networks: Not Implemented. A foundational algorithm in deep learning that tries to mimic the workings of a human brain to make decisions.
- Convolutional Neural Networks (CNN): Not Implemented. A type of neural network particularly effective in tasks related to image processing.
- Recurrent Neural Networks (RNN): Not Implemented. A type of neural network with 'memory' for use cases where the order of data is important.
- Autoencoders: Not Implemented. A type of artificial neural network used for learning efficient codings of input data.
- Generative Adversarial Networks (GANs): Not Implemented. An algorithmic structure where two neural networks contest with each other in a zero-sum game framework.
Each algorithm will be implemented as a C++ class. This means you can create an instance of the algorithm, fit it to your data using the train
method, and make predictions with the predict
method. For example, see LinearRegression.cpp and main.cpp.
Feel free to contribute to this project by implementing the not implemented algorithms or by optimizing the current implementations. Open a pull request and let's discuss your changes.
This project is licensed under the terms of the MIT license.