Implementing classical ML models from scratch using only NumPy, and building small projects alongside for deeper understanding. No sklearn for model logic — just math and code.
Following the roadmap.sh/machine-learning roadmap — see ROADMAP.md for full progress tracker.
| Category | Models | Status |
|---|---|---|
| Regression | Linear, Multiple, Lasso, Ridge, ElasticNet | Complete |
| Classification | KNN, Logistic Regression, SVM, Decision Trees, Random Forest | Complete |
| Unsupervised | K-Means, DBSCAN, PCA, ... | Up next |
| Model | Code |
|---|---|
| Simple Linear Regression | SLR-byhand.py |
| Multiple Linear Regression | MLR-byhand.py |
| Ridge Regression | LR-ridge.py |
| Lasso Regression | LR-lasso.py |
| ElasticNet Regression | elasticnet_from_scratch.py |
| Model | Code |
|---|---|
| KNN (K-Nearest Neighbors) | KNN-byhand.py |
| Logistic Regression | log-regbyhand.py |
| SVM (Support Vector Machine) | SVM-byhand.py |
| Decision Trees | DecisionTrees-byhand.py |
| Random Forest | Randomforest-byhand.py |
| Gradient Boosting Machines | GradientBoostingMachines-byhand.py |
| Project | Dataset | Model | Code |
|---|---|---|---|
| Titanic Survival Prediction | Kaggle Titanic | Logistic Regression (from scratch) | log-reg-titanic.ipynb |
| Spam Detection | SMS Spam Collection | SVM (from scratch) | svm-spamdetection.ipynb |
| Model | Output |
|---|---|
| Simple Linear Regression | ![]() |
| Multiple Linear Regression | ![]() |
| Lasso Regression | ![]() |
| Ridge & Lasso | ![]() |
| ElasticNet | ![]() |
| Model | Output |
|---|---|
| KNN | ![]() |





