# akramz/hands-on-machine-learning-with-scikit-learn-keras-and-tensorflow

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/akramz-hands-on-machine-learning-with-scikit-learn-keras-and-tensorflow).**

1,041 stars · 422 forks · Jupyter Notebook

## Links

- GitHub: https://github.com/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow
- Homepage: https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/tree/master/
- awesome-repositories: https://awesome-repositories.com/repository/akramz-hands-on-machine-learning-with-scikit-learn-keras-and-tensorflow.md

## Topics

`artificial-intelligence` `deep-learning` `machine-learning` `neural-networks` `notebooks` `scikit-learn`

## Description

This project serves as an educational and practical resource for mastering machine learning workflows using Python. It provides a comprehensive collection of code examples and exercises designed to guide users through the implementation of predictive systems, ranging from fundamental algorithms to deep learning architectures.

The repository distinguishes itself by offering a structured approach to both classical machine learning and neural network training. It covers the full lifecycle of model development, including the orchestration of reusable data transformation pipelines, advanced ensemble strategies like stacking and sequential training, and techniques for handling large-scale datasets through incremental processing.

The material encompasses a broad capability surface, including classification, regression, clustering, and dimensionality reduction. It provides tools for rigorous model evaluation, such as error analysis and performance metrics, alongside optimization techniques like hyperparameter tuning, regularization, and automated training controls to ensure model reliability and generalization.

The content is organized as a series of tutorials and practical exercises, making it a reference for building and deploying intelligent systems with standard industry frameworks.

## Tags

### Artificial Intelligence & ML

- [Machine Learning Model Development](https://awesome-repositories.com/f/artificial-intelligence-ml/machine-learning-model-development.md) — Provides a comprehensive framework for building and training predictive models.
- [Data Science Workflows](https://awesome-repositories.com/f/artificial-intelligence-ml/data-science-workflows.md) — Provides a practical reference for cleaning datasets, engineering features, and building robust machine learning pipelines.
- [Deep Learning Exercises](https://awesome-repositories.com/f/artificial-intelligence-ml/deep-learning-exercises.md) — Offers a structured set of exercises for training neural networks and optimizing model performance.
- [Model Evaluation Metrics](https://awesome-repositories.com/f/artificial-intelligence-ml/machine-learning/infrastructure/model-evaluation-and-validation/model-evaluation-metrics.md) — Assesses predictive accuracy using cross-validation and error metrics to compare architectures and detect overfitting. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/02.End-to-End-ML-Project.ipynb))
- [Hyperparameter Optimization](https://awesome-repositories.com/f/artificial-intelligence-ml/model-optimization/training-efficiency/hyperparameter-optimization.md) — Automates hyperparameter tuning through grid and randomized search strategies to optimize model configurations. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/02.End-to-End-ML-Project.ipynb))
- [Model Performance Evaluators](https://awesome-repositories.com/f/artificial-intelligence-ml/model-performance-evaluators.md) — Provides comprehensive metrics including precision, recall, and confusion matrices to evaluate classification model effectiveness. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/03.Classification.ipynb))
- [Neural Network Training Frameworks](https://awesome-repositories.com/f/artificial-intelligence-ml/neural-network-training-frameworks.md) — Guides the design and training of deep learning architectures using modern frameworks.
- [Gradient Descent Algorithms](https://awesome-repositories.com/f/artificial-intelligence-ml/optimization-algorithms/gradient-descent-algorithms.md) — Uses iterative gradient descent algorithms to optimize model parameters and minimize loss.
- [Parameter Optimizers](https://awesome-repositories.com/f/artificial-intelligence-ml/parameter-optimizers.md) — Adjusts model weights iteratively using gradient descent algorithms to minimize loss and improve predictive accuracy. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/04.Training-Models.ipynb))
- [Scikit-Learn Implementations](https://awesome-repositories.com/f/artificial-intelligence-ml/scikit-learn-implementations.md) — Offers practical implementations of data preprocessing and machine learning workflows.
- [Anomaly Detection](https://awesome-repositories.com/f/artificial-intelligence-ml/anomaly-detection.md) — Identifies outliers and novel instances by analyzing data density and reconstruction errors. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/09.Unsupervised_learning.ipynb))
- [Class Probability Estimation](https://awesome-repositories.com/f/artificial-intelligence-ml/class-probability-estimation.md) — Calculates the likelihood of an instance belonging to a specific class by returning the ratio of that class within a leaf node. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/06.Decision_Trees.ipynb))
- [Classification](https://awesome-repositories.com/f/artificial-intelligence-ml/classification.md) — Supports assigning multiple binary labels to a single data point to categorize items into several distinct groups simultaneously. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/03.Classification.ipynb))
- [Classification Algorithms](https://awesome-repositories.com/f/artificial-intelligence-ml/classification-algorithms.md) — Separates data classes by fitting the widest possible boundary between them using support vectors to improve generalization. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/05.SVMs.ipynb))
- [Multiclass](https://awesome-repositories.com/f/artificial-intelligence-ml/classification/multiclass.md) — Trains models to sort inputs into one of several distinct categories using strategies like one-versus-the-rest. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/03.Classification.ipynb))
- [Clustering Algorithms](https://awesome-repositories.com/f/artificial-intelligence-ml/clustering-algorithms.md) — Groups similar objects together based on feature similarity to identify hidden patterns or segment data. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/09.Unsupervised_learning.ipynb))
- [Decision Trees](https://awesome-repositories.com/f/artificial-intelligence-ml/decision-trees.md) — Implements hierarchical decision structures to categorize data based on learned feature thresholds.
- [Classification Trees](https://awesome-repositories.com/f/artificial-intelligence-ml/decision-trees/classification-trees.md) — Builds decision tree models to categorize input data into discrete classes based on learned feature thresholds and logical branching rules. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/06.Decision_Trees.ipynb))
- [Model Logic Visualization](https://awesome-repositories.com/f/artificial-intelligence-ml/decision-trees/model-logic-visualization.md) — Exports and visualizes internal decision tree structures to interpret model logic and decision-making processes. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/06.Decision_Trees.ipynb))
- [Regression Trees](https://awesome-repositories.com/f/artificial-intelligence-ml/decision-trees/regression-trees.md) — Constructs regression trees that estimate continuous target values by averaging outcomes within leaf nodes. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/06.Decision_Trees.ipynb))
- [Dimensionality Reduction](https://awesome-repositories.com/f/artificial-intelligence-ml/dimensionality-reduction.md) — Simplifies high-dimensional data by projecting it into lower-dimensional spaces.
- [Dimensionality Reduction Techniques](https://awesome-repositories.com/f/artificial-intelligence-ml/dimensionality-reduction-techniques.md) — Projects high-dimensional datasets into lower-dimensional spaces while preserving essential variance or local relationships. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/08.Dim_Reduction.ipynb))
- [Ensemble Learning Strategies](https://awesome-repositories.com/f/artificial-intelligence-ml/ensemble-learning-strategies.md) — Implements ensemble strategies like bagging and boosting to enhance predictive performance.
- [Stacking Ensembles](https://awesome-repositories.com/f/artificial-intelligence-ml/ensemble-learning/stacking-ensembles.md) — Trains meta-learners to aggregate base model predictions through stacking architectures. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/07.Ensembles_RFs.ipynb))
- [Feature Sampling Strategies](https://awesome-repositories.com/f/artificial-intelligence-ml/ensemble-methods/feature-sampling-strategies.md) — Trains predictors on random subsets of input features to increase model diversity and improve performance. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/07.Ensembles_RFs.ipynb))
- [Sequential Training Procedures](https://awesome-repositories.com/f/artificial-intelligence-ml/ensemble-methods/sequential-training-procedures.md) — Combines multiple weak learners by training them in sequence so that each subsequent model attempts to correct previous errors. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/07.Ensembles_RFs.ipynb))
- [Feature Engineering](https://awesome-repositories.com/f/artificial-intelligence-ml/feature-engineering.md) — Transforms raw data attributes into informative features to capture complex relationships. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/02.End-to-End-ML-Project.ipynb))
- [Feature Scale Normalization](https://awesome-repositories.com/f/artificial-intelligence-ml/feature-scale-normalization.md) — Normalizes and standardizes numerical features to ensure consistent input ranges. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/02.End-to-End-ML-Project.ipynb))
- [Cluster Count Selection Methods](https://awesome-repositories.com/f/artificial-intelligence-ml/k-means-clustering/cluster-count-selection-methods.md) — Determines the ideal number of clusters for a dataset automatically using probabilistic models. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/09.Unsupervised_learning.ipynb))
- [Linear Regression](https://awesome-repositories.com/f/artificial-intelligence-ml/linear-regression.md) — Implements linear regression models to predict continuous numerical values using weighted feature sums. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/04.Training-Models.ipynb))
- [Regularization Techniques](https://awesome-repositories.com/f/artificial-intelligence-ml/linear-regression-models/regularization-techniques.md) — Applies Ridge and Lasso regularization to linear models to constrain weights and prevent overfitting. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/04.Training-Models.ipynb))
- [Kernel Mappings](https://awesome-repositories.com/f/artificial-intelligence-ml/linear-regression/polynomial-feature-mapping/kernel-mappings.md) — Projects input data into higher-dimensional spaces to enable linear separation of complex patterns.
- [Logistic Regression Models](https://awesome-repositories.com/f/artificial-intelligence-ml/logistic-regression-models.md) — Calculates the likelihood that an input belongs to a specific category using a sigmoid function to perform binary classification. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/04.Training-Models.ipynb))
- [Hyperparameter Search Strategies](https://awesome-repositories.com/f/artificial-intelligence-ml/model-fine-tuning-resources/hyperparameter-tuning/hyperparameter-search-strategies.md) — Automates the search for optimal model configurations using grid-based strategies.
- [Model Ensembling](https://awesome-repositories.com/f/artificial-intelligence-ml/model-optimization/compression-techniques/model-ensembling.md) — Combines multiple predictive models to improve overall accuracy and reduce variance.
- [Ensemble Prediction Combinations](https://awesome-repositories.com/f/artificial-intelligence-ml/model-predictions/ensemble-prediction-combinations.md) — Aggregates outputs from multiple models using voting or averaging to improve accuracy. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/07.Ensembles_RFs.ipynb))
- [Early Stopping Callbacks](https://awesome-repositories.com/f/artificial-intelligence-ml/model-training/early-stopping-callbacks.md) — Halts training automatically when validation performance plateaus to prevent overfitting and conserve computational resources. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/04.Training-Models.ipynb))
- [Multi-Output Prediction Models](https://awesome-repositories.com/f/artificial-intelligence-ml/multi-output-prediction-models.md) — The library enables generating multiple target values for a single input to handle complex tasks like noise removal or multi-dimensional data processing. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/03.Classification.ipynb))
- [Polynomial Transformations](https://awesome-repositories.com/f/artificial-intelligence-ml/non-linear-regression/polynomial-transformations.md) — Enables linear models to capture complex, curved patterns by transforming input data into polynomial features. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/05.SVMs.ipynb))
- [Support Vector Regressors](https://awesome-repositories.com/f/artificial-intelligence-ml/non-linear-regression/support-vector-regressors.md) — Fits regression models using support vector techniques to handle complex, non-linear predictive tasks. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/05.SVMs.ipynb))
- [Polynomial Regression](https://awesome-repositories.com/f/artificial-intelligence-ml/polynomial-regression.md) — Supports polynomial regression to model non-linear relationships by adding powers of features to the input dataset. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/04.Training-Models.ipynb))
- [Classification Error Analysis](https://awesome-repositories.com/f/artificial-intelligence-ml/prediction-visualization/accuracy-calculators/error-metrics/classification-error-analysis.md) — Visualizes confusion matrices to diagnose and decompose classification errors for model improvement. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/03.Classification.ipynb))
- [Stochastic Gradient Optimizers](https://awesome-repositories.com/f/artificial-intelligence-ml/rmsprop-optimizers/optimizer-selections/stochastic-gradient-optimizers.md) — Processes data in small batches to enable learning on datasets exceeding system memory.
- [Tutorials](https://awesome-repositories.com/f/artificial-intelligence-ml/scikit-learn-implementations/tutorials.md) — Provides a comprehensive guide to implementing supervised and unsupervised learning algorithms using standard Python libraries.
- [Training Data Sampling Strategies](https://awesome-repositories.com/f/artificial-intelligence-ml/training-data-sampling-strategies.md) — Trains individual predictors on random subsets of training data to increase model diversity and improve scalability. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/07.Ensembles_RFs.ipynb))

### Education & Learning Resources

- [Machine Learning Educational Resources](https://awesome-repositories.com/f/education-learning-resources/machine-learning-educational-resources.md) — Provides a collection of code examples and exercises for mastering machine learning to build and deploy intelligent predictive systems.
- [Softmax Regression](https://awesome-repositories.com/f/education-learning-resources/educational-resources/systems-applied-computing/machine-learning-education/softmax-regression.md) — Generalizes classification to multiple mutually exclusive categories by converting raw output scores into a probability distribution. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/04.Training-Models.ipynb))

### Software Engineering & Architecture

- [Data Transformation Pipelines](https://awesome-repositories.com/f/software-engineering-architecture/data-transformation-pipelines.md) — Orchestrates reusable sequences of data transformation and feature engineering steps.
- [Regularized Tree Pruning](https://awesome-repositories.com/f/software-engineering-architecture/trees/regularized-tree-pruning.md) — Constrains tree growth using depth and sample limits to improve generalization and prevent overfitting. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/06.Decision_Trees.ipynb))

### Part of an Awesome List

- [Semi-Supervised Learning](https://awesome-repositories.com/f/awesome-lists/ai/graph-machine-learning/semi-supervised-learning.md) — Propagates labels from a small set of representative instances to unlabeled data within the same cluster. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/09.Unsupervised_learning.ipynb))

### Data & Databases

- [Data Cleaning Procedures](https://awesome-repositories.com/f/data-databases/data-cleaning-procedures.md) — Imputes missing values and encodes categorical data to prepare datasets for training. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/02.End-to-End-ML-Project.ipynb))
- [Incremental Data Streaming](https://awesome-repositories.com/f/data-databases/incremental-data-streaming.md) — Handles large-scale datasets by processing data in incremental batches. ([source](https://nbviewer.jupyter.org/github/Akramz/Hands-on-Machine-Learning-with-Scikit-Learn-Keras-and-TensorFlow/blob/master/08.Dim_Reduction.ipynb))
