This course follows one company from the first lesson to the final project. NorthPeak Manufacturing is a fictional Canadian firm that runs 40 machines on three sites: Montreal, Quebec City and Toronto. Each machine sends one sensor reading per day, and a technician writes a short note after every incident. All the data is synthetic and lives in one Git repository, the lab kit, which you will install in Exercise 1. This page presents the company, the repository and the files you will open again and again, so that every later lesson can name a file and you know where it is.
NorthPeak Manufacturing runs four kinds of machines: pumps, compressors, conveyors and chillers. Each machine has an identifier from M001 to M040, a site, an installation year and a rated power. The machines run all year. When one of them fails, a technician opens an incident, repairs the machine, and writes a two-sentence description of what was found.
The question the company asks is the thread of the whole course: which machine will fail in the next seven days, and why? Weeks 2 to 7 answer it with tables and models. Weeks 8 to 13 add the technician notes, the maintenance manuals and a local language model. Weeks 14 and 15 put everything on one page for the technicians.
The lab kit is a public Git repository:
https://github.com/hrhouma2/aiopsatlas-ml-data-diagnostics-labs-en
You clone it once, in Exercise 1. It contains the script that builds the data, the six maintenance manuals, and one folder per week with the solution of every exercise. Nothing runs in the cloud. Everything runs on your laptop with Python and, from Exercise 2, a local language model served by Ollama.
| Path in the kit | What it holds |
|---|---|
data/make_dataset.py | The script that generates every data file below. Same data on every laptop. |
data/clean/ | The three clean CSV files used from Week 2 on. |
data/raw/ | The same three files with duplicates, gaps and typos left in. Used in Week 2 to practise cleaning. |
data/diagnostics.sqlite | The same data as an SQLite database with three tables: machines, readings, incidents. |
data/json/incidents.json | The incidents as JSON documents, for Week 3. |
data/graph/nodes.csv, data/graph/edges.csv | Machines, sites, technicians and incidents as a graph, for Week 3. |
docs/manuals/ | Six short maintenance manuals in Markdown. They become the knowledge base for retrieval in Weeks 9 to 11. |
week01/ to week15/ | The solution scripts of each exercise. Look at them after you tried, not before. |
common/ | Small helper modules shared by several weeks. |
Every tool in this course is free and runs on your own laptop. Exercise 1 installs them step by step.
| Tool | What it is | First used |
|---|---|---|
| Python 3 | The programming language of the course. Every exercise is a short Python script. | Week 1 |
| Git | The program that copies the kit repository to your laptop, with git clone. | Week 1 |
| pandas | A Python library that opens a CSV file as a table and lets you filter, count and group its rows. | Week 1 |
| numpy | A Python library for fast arithmetic on columns of numbers. pandas is built on it. | Week 1 |
| scikit-learn | A Python library that trains models: it learns from the rows of a table and predicts a column. | Week 1 install, Week 4 first model |
| matplotlib | A Python library that draws charts and saves them as PNG images. | Week 5 |
| Ollama | A program that runs a language model on your laptop. llama3.2 writes text; nomic-embed-text turns text into numbers. | Week 1 |
Every exercise starts from one of these three files. Learn their names and their columns now.
data/clean/machines.csv, 40 rows, one per machine.
| Column | Meaning | Example |
|---|---|---|
machine_id | Identifier of the machine | M001 |
machine_type | pump, compressor, conveyor or chiller | pump |
site | Montreal, Quebec City or Toronto | Toronto |
install_year | Year the machine was installed | 2022 |
rated_power_kw | Power the machine is built for, in kilowatts | 45.0 |
data/clean/readings.csv, 14,600 rows, one per machine per day of 2025 (40 machines times 365 days).
| Column | Meaning | Example |
|---|---|---|
reading_id | Row number | 1 |
machine_id | Which machine | M001 |
date | Which day | 2025-01-01 |
load_pct | How hard the machine worked that day, in percent | 33.9 |
ambient_c | Outside temperature, in degrees Celsius | -3.9 |
temperature_c | Casing temperature of the machine | 26.1 |
vibration_mm_s | Vibration, in millimetres per second | 3.25 |
pressure_bar | Pressure, in bar | 6.52 |
power_kw | Power drawn that day, in kilowatts | 18.3 |
fault_next_7d | 1 if a fault followed within seven days, else 0 | 0 |
The last column is the answer the course tries to predict. It is 1 on 1,085 of the 14,600 rows.
data/clean/incidents.csv, 155 rows, one per failure.
| Column | Meaning | Example |
|---|---|---|
incident_id | Identifier of the incident | INC-0001 |
machine_id | Which machine failed | M001 |
date | Day of the failure | 2025-02-20 |
category | overheating, bearing_wear, leak, electrical or sensor_fault | overheating |
severity | low, medium or high | high |
downtime_hours | Hours the machine was stopped | 29.9 |
repair_cost_cad | Cost of the repair, in Canadian dollars | 3465.33 |
technician | Who repaired it | L. Fortin |
description | The technician's note, two sentences | Overheating alarm on M001. Cooling fan running but airflow blocked by dust. |
Each week has the same rhythm: a five-minute lesson, a quiz, another lesson, a quiz, then an exercise on the kit. The exercise tells you which file to open and which folder holds the solution. When a lesson says "on the NorthPeak readings", it means data/clean/readings.csv. When it says "the manuals", it means docs/manuals/. When it says "the database", it means data/diagnostics.sqlite.
You do not need the kit for the next four lessons of this week. You need it from Exercise 1 onward, and every week after that.