Month 2 — Classical ML (Scikit-learn)
🎯 Goal of this month
By the end of the month you will be able to:
- Turn a real business problem into an ML task (regression / classification / clustering)
- Build a complete ML pipeline with Scikit-learn
- Evaluate a model and understand error types
- Create production-grade models with XGBoost/LightGBM
- Participate in a Kaggle competition and reach the top 30%
Weekly breakdown
| Week | Topic | Time |
|---|---|---|
| Week 1 | ML foundations + Regression | 10-12 hours |
| Week 2 | Classification + Clustering | 10-12 hours |
| Week 3 | Feature Engineering + Evaluation | 8-10 hours |
| Week 4 | Ensembles (XGBoost/LightGBM) + Kaggle | 12-15 hours |
Chapter order
- Introduction to ML — terms, process, training/test split
- Regression — predicting a continuous value
- Classification — separating into classes
- Clustering — unsupervised grouping
- Feature Engineering — preparing and creating features
- Model Evaluation — metrics and validation
- Ensemble Methods — Random Forest, XGBoost, LightGBM
- Exercises — additional exercises and Kaggle tasks
What can you do by the end of the month?
- Solve 80% of tabular data problems (regression, classification, clustering)
- Write reproducible code using Scikit-learn
Pipeline - Save a model with
jobliband serve it via FastAPI - Reach Kaggle top 30% with XGBoost/LightGBM
- Explain the ROI of an ML model to the business
Tip for Backend Dev
Like writing a REST API in backend, in ML there’s the fit() → predict() pattern:
# Backend pattern
@app.post("/users")
def create_user(data: UserIn):
user = User(**data.dict())
db.add(user)
return user
# ML pattern
model = LogisticRegression()
model.fit(X_train, y_train) # "train"
predictions = model.predict(X_test) # "predict"
This pattern is the same for all sklearn models — if you know LinearRegression, you also know RandomForest.
MLOps integration (from the start)
Backend dev’s advantage — production thinking. When writing your first model, already think about:
- Reproducibility —
random_state=42everywhere - Saving —
joblib.dump(model, 'model.pkl') - Versioning —
model_v1.pkl,model_v2.pkl - Schema — input/output validation with Pydantic
- Logging — timestamp and input for every prediction
These topics are covered deeper in Month 6 (MLOps), but start from day one.
Start
Start with Introduction to ML.