implementing ml from scratch — just to actually understand how it works from first principles.
i think it’s important to reason from first principles rather than by analogy. ~ elon musk
This repository is a collection of machine learning algorithms implemented completely from scratch using only:
- Python
- NumPy
- Matplotlib
- Basic mathematics
No scikit-learn training APIs.
No black-box abstractions.
The goal of this project is simple:
understand what actually happens inside machine learning algorithms instead of only importing libraries.
Each implementation is written in a clean and educational notebook format with:
- mathematical intuition
- step-by-step implementation
- visualizations
- training logic
- loss calculations
- optimization process
Predicts continuous numerical values using a linear relationship.
- Mean Squared Error (MSE)
- Gradient Descent
- Parameter optimization
- Loss minimization
- Regression line visualization
- synthetic data generation
- forward propagation
- loss calculation
- manual gradient updates
- training loop
- plotting predictions vs actual values
Binary classification using probability estimation.
- Sigmoid activation
- Cross Entropy Loss
- Binary classification
- Decision boundary
- probability prediction
- gradient descent optimization
- classification accuracy
- visualization of predictions
- loss curve plotting
Extension of logistic regression for multi-class classification.
- Softmax function
- Multi-class probabilities
- Cross entropy loss
- multi-class prediction
- probability distributions
- training process
- visualization
Simple distance-based classification algorithm.
- Euclidean distance
- Majority voting
- Lazy learning
- nearest neighbor search
- customizable K value
- classification visualization
Probabilistic classification using Bayes’ theorem.
- Conditional probability
- Gaussian distributions
- Bayesian inference
- probability calculations
- feature likelihood estimation
- prediction pipeline
Tree-based classification using recursive splitting.
- Entropy
- Information Gain
- Recursive tree construction
- best feature selection
- node creation
- recursive splitting
- prediction traversal
- tree structure logic
Ensemble learning using multiple decision trees.
- Bagging
- Ensemble learning
- Variance reduction
- multiple tree training
- aggregated predictions
- robust classification
Classification using optimal separating hyperplanes.
- Margin maximization
- Hyperplanes
- Linear classification
- SVM optimization logic
- training procedure
- decision boundary visualization
Dimensionality reduction technique.
- Covariance matrix
- Eigenvalues & Eigenvectors
- Variance preservation
- feature normalization
- covariance computation
- principal component extraction
- data projection
- variance visualization
Centroid-based clustering algorithm.
- Cluster assignment
- Centroid optimization
- Iterative convergence
- centroid initialization
- cluster updates
- convergence detection
- cluster visualization
Density-based clustering algorithm.
- Core points
- Border points
- Noise detection
- Density connectivity
- epsilon neighborhood search
- density expansion
- arbitrary-shaped clustering
- noise identification
12. Hidden Markov Model (HMM)
Sequence modeling using hidden states.
- Hidden states
- Transition probabilities
- Emission probabilities
- Sequential prediction
- probability calculations
- sequence inference
- forward-style computations
- visualization and examples
- Python
- NumPy
- Matplotlib
- Jupyter Notebook
ml-from-scratch/
│
├── 01. Linear Regression/
├── 02. Logistic Regression/
├── 03. Softmax Regression/
├── 04. KNN/
├── 05. Naive Bayes/
├── 06. Decision Trees/
├── 07. Random Forest/
├── 08. SVM/
├── 09. PCA/
├── 10. K-Means/
├── 11. DBSCAN/
└── 12. Hidden Markov Model/Most people learn ML like this:
from sklearn import ...
model.fit(X, y)but never really understand:
- how gradients are computed
- why loss decreases
- how optimization works
- what the model is mathematically learning
- why algorithms behave differently
This repository focuses on:
- intuition first
- implementation second
- libraries later
Clone the repository:
git clone https://github.com/piyushdev04/ml-from-scratch.gitMove into the project:
cd ml-from-scratchInstall dependencies:
pip install numpy matplotlib notebookRun Jupyter Notebook:
jupyter notebookIf this repository helped you learn something, consider giving it a ⭐
