What you actually need
Everything in this course runs on free software. Nothing here requires a paid licence, a GPU, or a machine you do not already have. Job adverts will name paid tools, and it is worth knowing what they are, but the free path is not a compromised version of this subject: in classical machine learning it is the industry standard.
The stack, all free and open source:
- Python with NumPy for arrays, pandas for tables, scikit-learn for models, matplotlib for plots. This is what most working data scientists use, including at large companies. There is no paid tier.
- XGBoost, LightGBM and CatBoost: the gradient boosting libraries that win most tabular competitions. Free, and they run on a CPU.
- PyTorch for neural networks. Free. Its main commercial alternative is TensorFlow, which is also free.
- JupyterLab for notebooks, or VS Code with the Python extension, or VSCodium if you prefer a build with no telemetry.
The paid tools you will see in job adverts are MATLAB (use GNU Octave, which runs most MATLAB code unchanged), SAS and SPSS (use Python or R, both free), Tableau (use Metabase or matplotlib), and DataRobot or Vertex AI for AutoML (see the AutoML lesson in module 9 for free equivalents). Learn to say “I have done this in scikit-learn” in an interview; nobody serious will hold it against you.
If you do not have a laptop
This is the more common case than the industry admits, and it is workable.
- Google Colab gives you a free notebook in a browser with about 12 GB of RAM and, in the free tier, intermittent GPU access. It runs on a phone browser in a pinch, though typing code on a phone is miserable and you should not plan a career around it.
- Kaggle Notebooks give you a free environment with roughly 30 hours a week of GPU time, which is considerably more than Colab’s free tier, plus thousands of hosted datasets you can attach with one click and no download.
- Both save to your account. Neither requires a card.
For this course, Kaggle is the better default because the datasets are already there. Open a notebook, attach a dataset, and the code in the previous lesson runs.
Installing locally, if you can
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install numpy pandas scikit-learn matplotlib jupyterlab
jupyter labUse a virtual environment every time. The reason is not tidiness: two projects that need different versions of the same library will fight, and the loser is whichever one you touched second. A .venv per project makes that impossible.
If pip install fights you over compiled dependencies (common on Windows and on older Macs) use Miniconda instead, which ships pre-built binaries:
conda create -n ml python=3.11 numpy pandas scikit-learn matplotlib jupyterlab
conda activate mlDatasets to practise on, legally
Use these rather than scraping something. Every one is free and licensed for learning.
- scikit-learn’s built-in sets:
load_diabetes,load_wine,fetch_california_housing. They load in one line and need no download. - The UCI Machine Learning Repository: hundreds of small, well-documented, classic datasets.
- Kaggle Datasets: larger and messier, which is realistic.
- data.gov.in, data.gov.uk and equivalents: real public data with real problems in it, which is the best practice you can get.
A note on the famous ones. The Boston Housing dataset was removed from scikit-learn in version 1.2 because one of its features encodes the proportion of Black residents in a way that was used as a predictor of house price. It is still in old tutorials. Do not use it; fetch_california_housing is the direct replacement and the reason for the swap is worth knowing, because a dataset’s history is part of what you are teaching a model.
Two habits that save you
Set the random seed and record it. random_state=0 everywhere. Results that change every run cannot be debugged and cannot be reported.
Version the environment. pip freeze > requirements.txt at the start of anything you might revisit. Six months later, an unpinned library upgrade will change your numbers, and you will spend two days finding out why.
The limitation
Free compute has ceilings. Colab and Kaggle will disconnect long-running jobs, free GPU quotas run out, and neither is suitable for training a large model from scratch. Everything in this course fits comfortably inside those ceilings: classical machine learning on tabular data is not compute-hungry, and a gradient boosting model on 100,000 rows trains in under a minute on a CPU.
What you cannot do on free hardware is pretrain a large language model. What you can do is use one that somebody else pretrained, fine-tune a small one, and do the entire body of work that most machine learning jobs actually consist of.
Every lesson here is open. Your progress is recorded once you pass the How a Language Model Actually Works exam.
Check your understanding
Why does creating a virtual environment per project matter more than it appears to for someone learning alone on one machine?
Pick the one you would defend. Your answer stays private.
Stuck on something?Ask Funke, your AI tutor
