Skip to content

riponcm/100-Days-of-ML-for-Geotechnical-Engineering

Repository files navigation

100 Days

100 Days of ML for Geotechnical Engineering

From Python Basics to AI-Powered Geotechnical Solutions

Python PyTorch Scikit-Learn NumPy Pandas Kaggle License: MIT

Banner

Author Ripon Chandra Malo
Affiliation PhD Student — Civil & Environmental Engineering (Geotechnical), University of Utah
Research Granular Materials x Artificial Intelligence
Start Date February 2026

About This Repository

A structured 100-day journey bridging the gap between classical geotechnical engineering and modern machine learning / deep learning — one commit, one notebook, one day at a time.

Every day includes a Python script (.py), a Jupyter Notebook (.ipynb), concise notes (notes.md),.

The journey starts from Python fundamentals and progresses to Physics-Informed Neural Networks (PINNs), LSTMs for seismic data, and end-to-end geotechnical ML pipelines.


Repository Structure

100-Days-of-ML-for-Geotechnical-Engineering/
│
├── README.md
├── LICENSE
├── requirements.txt
├── .gitignore
│
├── Phase-1_Python-Fundamentals/          (Day 001 – 015)
├── Phase-2_Data-Science-Essentials/      (Day 016 – 035)
├── Phase-3_Classical-ML/                 (Day 036 – 060)
├── Phase-4_Deep-Learning/                (Day 061 – 085)
├── Phase-5_Geotechnical-AI-Projects/     (Day 086 – 100)
│
└── assets/

Daily Workflow

Step Time Action
Learn 10 min Read / watch the concept
Code 35 min Implement in .ipynb / .py
Notes 10 min Write notes.md with key takeaways
Push 5 min git add > commit > push + Upload .ipynb to Kaggle

Phase Overview

Phase Days Focus Status
Phase 1 001 – 015 Python Fundamentals Upcoming
Phase 2 016 – 035 Data Science Essentials Upcoming
Phase 3 036 – 060 Classical Machine Learning Upcoming
Phase 4 061 – 085 Deep Learning (PyTorch, PINNs) Upcoming
Phase 5 086 – 100 Geotechnical AI Capstone Projects Upcoming

Legend:   Done   Working   Upcoming


100-Day Progress Tracker

Phase 1

Day 001 – 015

Day Topic Notebook Status
001 Variables, Data Types & Type Casting Notebook Done
002 Conditionals — if / elif / else Notebook Done
003 Loops — for, while, enumerate, zip Notebook Done
004 Strings & String Methods Notebook Done
005 Lists, Tuples & Sets Notebook Done
006 Dictionaries & Comprehensions Notebook Done
007 Functions & Lambda Expressions Notebook Done
008 File I/O — Read & Write CSV, TXT Notebook Done
009 Error Handling — try / except / finally Notebook Done
010 OOP — Classes & Objects Notebook Working
011 OOP — Inheritance & Polymorphism Notebook Upcoming
012 Modules & Packages Notebook Upcoming
013 Decorators & Generators Notebook Upcoming
014 Regular Expressions (re module) Notebook Upcoming
015 Mini Project: USCS Soil Classification Tool Notebook Upcoming

Phase 2

Day 016 – 035

Day Topic Notebook Status
016 NumPy — Arrays & Operations Notebook Upcoming
017 NumPy — Linear Algebra (SVD, Eigenvalues) Notebook Upcoming
018 NumPy — Signal Processing Basics Notebook Upcoming
019 Pandas — Series & DataFrames Notebook Upcoming
020 Pandas — Data Cleaning & Missing Values Notebook Upcoming
021 Pandas — GroupBy & Aggregation Notebook Upcoming
022 Pandas — Merge, Join & Concat Notebook Upcoming
023 Matplotlib — Basic Plots Notebook Upcoming
024 Matplotlib — Subplots & Customization Notebook Upcoming
025 Seaborn — Statistical Visualization Notebook Upcoming
026 Plotly — Interactive Plots Notebook Upcoming
027 SciPy — Optimization Notebook Upcoming
028 SciPy — Interpolation & Curve Fitting Notebook Upcoming
029 SciPy — Signal Processing (FFT, Filtering) Notebook Upcoming
030 Exploratory Data Analysis (EDA) Workflow Notebook Upcoming
031 Feature Engineering Techniques Notebook Upcoming
032 Data Preprocessing Pipeline Notebook Upcoming
033 Handling Imbalanced Datasets Notebook Upcoming
034 Dimensionality Reduction (PCA, SVD) Notebook Upcoming
035 Mini Project: SPT Borehole Data EDA Notebook Upcoming

Phase 3

Day 036 – 060

Day Topic Notebook Status
036 Linear Regression from Scratch Notebook Upcoming
037 Linear Regression with Scikit-Learn Notebook Upcoming
038 Polynomial, Ridge & Lasso Regression Notebook Upcoming
039 Logistic Regression Notebook Upcoming
040 K-Nearest Neighbors (KNN) Notebook Upcoming
041 Decision Trees Notebook Upcoming
042 Random Forest Notebook Upcoming
043 Gradient Boosting & XGBoost Notebook Upcoming
044 Support Vector Machines (SVM) Notebook Upcoming
045 Naive Bayes Classifier Notebook Upcoming
046 K-Means Clustering Notebook Upcoming
047 DBSCAN & Hierarchical Clustering Notebook Upcoming
048 Cross-Validation & Hyperparameter Tuning Notebook Upcoming
049 Grid Search vs Random Search vs Optuna Notebook Upcoming
050 Regression Metrics (R-squared, RMSE, MAE) Notebook Upcoming
051 Classification Metrics (ROC, AUC, F1) Notebook Upcoming
052 Ensemble Methods Deep Dive Notebook Upcoming
053 Feature Importance & SHAP Explainability Notebook Upcoming
054 ML Pipeline with Scikit-Learn Notebook Upcoming
055 Soil Liquefaction Prediction (ML) Notebook Upcoming
056 Shear Wave Velocity from SPT (ML) Notebook Upcoming
057 Bearing Capacity Prediction (ML) Notebook Upcoming
058 Soil Type Classification (ML) Notebook Upcoming
059 CPT Data Interpretation with ML Notebook Upcoming
060 Mini Project: Full Geotech ML Pipeline Notebook Upcoming

Phase 4

Day 061 – 085

Day Topic Notebook Status
061 Neural Network from Scratch (NumPy) Notebook Upcoming
062 Intro to PyTorch — Tensors Notebook Upcoming
063 PyTorch — Autograd & Backpropagation Notebook Upcoming
064 PyTorch — Building a Simple NN Notebook Upcoming
065 Activation Functions Deep Dive Notebook Upcoming
066 Loss Functions & Optimizers Notebook Upcoming
067 Regularization (Dropout, BatchNorm) Notebook Upcoming
068 CNN — Fundamentals Notebook Upcoming
069 CNN — Image Classification Notebook Upcoming
070 Transfer Learning (ResNet, VGG) Notebook Upcoming
071 RNN — Fundamentals Notebook Upcoming
072 LSTM & GRU Networks Notebook Upcoming
073 Time Series Forecasting with LSTM Notebook Upcoming
074 Autoencoders Notebook Upcoming
075 Variational Autoencoders (VAE) Notebook Upcoming
076 Intro to GANs Notebook Upcoming
077 Physics-Informed Neural Networks (PINNs) Notebook Upcoming
078 PINNs for Geotechnical Problems Notebook Upcoming
079 Graph Neural Networks Basics Notebook Upcoming
080 Attention Mechanism & Transformers Intro Notebook Upcoming
081 Tabular Deep Learning (TabNet) Notebook Upcoming
082 Hyperparameter Tuning for Deep Learning Notebook Upcoming
083 Model Deployment (ONNX, TorchScript) Notebook Upcoming
084 Seismic Signal Classification (DL) Notebook Upcoming
085 Ground Motion Prediction with LSTM Notebook Upcoming

Phase 5

Day 086 – 100

Day Topic Notebook Status
086 SPT to Shear Wave Velocity (ANN + Ensemble) Notebook Upcoming
087 Liquefaction Susceptibility Mapping (DL) Notebook Upcoming
088 Soil Classification from CPT using CNN Notebook Upcoming
089 Settlement Prediction with ML Notebook Upcoming
090 Seismic Response Spectra Prediction Notebook Upcoming
091 Retaining Wall Design Optimization Notebook Upcoming
092 Slope Stability with ML Notebook Upcoming
093 Ground Motion Selection using Clustering Notebook Upcoming
094 DIGGS Data Automated Analysis Pipeline Notebook Upcoming
095 Reduced-Order Modeling for Geotechnics Notebook Upcoming
096 Streamlit Dashboard for Geotech ML Notebook Upcoming
097 Full Project: End-to-End ML Application Notebook Upcoming
098 Documentation & README Polish Notebook Upcoming
099 Kaggle Competition Submission Notebook Upcoming
100 Portfolio Summary & Reflection Notebook Upcoming

Tech Stack

Category Tools
Language Python 3.10+
Data NumPy, Pandas, SciPy
Visualization Matplotlib, Seaborn, Plotly
ML Scikit-Learn, XGBoost, Optuna
Deep Learning PyTorch
Deployment Streamlit, ONNX
Environment Jupyter Notebook, VS Code
Version Control Git & GitHub
Notebooks Kaggle Kernels

How to Use

# Clone the repository
git clone https://github.com/YOUR_USERNAME/100-Days-of-ML-for-Geotechnical-Engineering.git
cd 100-Days-of-ML-for-Geotechnical-Engineering

# Install dependencies
pip install -r requirements.txt

# Open any day's notebook
jupyter notebook Phase-1_Python-Fundamentals/Day_001/day_001.ipynb

Connect With Me

GitHub Kaggle LinkedIn Email


License

This project is licensed under the MIT License — see the LICENSE file for details.



Note

If you find this repository useful, consider giving it a star.


"The best time to plant a tree was 20 years ago. The second best time is now."

— Chinese Proverb

About

100-day journey from Python basics to AI-powered geotechnical solutions

Topics

Resources

License

Stars

Watchers

Forks

Contributors