This repository is a notebook-first machine learning study log. It captures a hands-on path through core supervised learning ideas: starting with linear regression, moving into classification, and ending with a small regression neural network exercise.
Rather than treating machine learning as a black box, these notebooks lean into the mechanics behind the models: cost functions, gradient descent, feature preparation, evaluation, and practical tradeoffs when working with real datasets.
Linear Regression
->
Multiple Features
->
Binary Classification
->
Classical ML Classifiers
->
Neural Network Regression
The overall path is simple: start with models that are easy to visualize, then introduce more features, sharper decision boundaries, stronger evaluation habits, and finally a layered model that pushes the same ideas further.
| Project | Focus | Dataset / Problem |
|---|---|---|
univariate_linear_regression |
Single-variable linear regression | Predict salary from years of experience |
multiple_linear_regression |
Multi-feature linear regression | Predict student performance from study and lifestyle features |
logistic_regression |
Binary classification with sigmoid and log loss | Predict diabetes outcome from medical features |
decision-tree-classifier |
Decision tree classification | Predict student admission decisions |
svm_classifier |
Support Vector Machine classification | Predict loan eligibility from customer attributes |
KNN-classifier |
K-Nearest Neighbors classification | Classify breast cancer samples as benign or malignant |
regression_neural_network |
Regression with a neural network | Predict a continuous student performance target |
This is not a packaged library. It is a collection of focused experiments, each stored in its own folder with:
- a Jupyter notebook containing the workflow and discussion
- a CSV dataset used by that notebook
- code for data cleaning, preparation, model training, and evaluation
That makes the repo useful as a personal reference, a revision guide, and a record of how different ML ideas connect in practice.
numpypandasmatplotlibseabornscikit-learnipympl
Dependencies are listed in requirements.txt.
- Create and activate a virtual environment.
- Install the project dependencies:
pip install -r requirements.txt- Open the notebooks with Jupyter Notebook or JupyterLab.
This repository reflects a few concrete lessons:
- I learned how linear regression is built from the ground up: hypothesis function, cost function, and iterative parameter updates with gradient descent.
- I learned why feature scaling and normalization matter, especially for optimization speed and distance-based models like KNN.
- I learned that data cleaning is not a side task. Removing weak features, handling missing values, and dropping non-predictive columns often matters as much as the model choice.
- I learned the difference between regression and classification more clearly by implementing both and seeing how the loss functions change.
- I learned why logistic regression uses sigmoid activation and log loss instead of mean squared error.
- I learned how tree-based, margin-based, and distance-based classifiers each approach the same prediction task differently.
- I learned to think about evaluation beyond a single score by using ideas like confusion matrices, precision, recall, F1-score, and train/test splits.
- I learned that model selection is tied to the problem shape: structured tabular data often rewards careful preprocessing and a sensible baseline before reaching for something heavier.
- I learned that neural networks extend familiar regression ideas, but with layered parameters, activation functions, and backpropagation.
- I learned to move between theory and implementation instead of treating the math and the code as separate subjects.
If you are learning ML in a practical way, this repo is useful because it shows progression:
- from simple to more expressive models
- from math-first intuition to applied workflows
- from raw CSV files to trained and evaluated models
It is best read notebook by notebook, in roughly the order listed above.
Reasonable next steps for this project would be:
- regularization for linear and logistic regression
- ensemble methods such as random forests
- clustering with K-Means
- dimensionality reduction with PCA
- cleaner experiment tracking and result comparison across notebooks