Skip to content

Commit 12b61d1

Browse files
committed
update
1 parent a3225d6 commit 12b61d1

3 files changed

Lines changed: 302 additions & 271 deletions

File tree

‎docs/curriculum_roadmap.md‎

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,9 @@ as the bridge into inference. Fits existing slots (no additions).
8484
>
8585
> Geometric-covariance cells were extracted to
8686
> `notebooks/Notebook_5/_staging_covariance_geometry.py` (leading underscore → not
87-
> rendered, not in the book config). Fold them into **5a** when PCA is worked, and
88-
> update that file's badge URLs to 5a's path.
87+
> rendered, not in the book config), to be folded into **5a** when PCA was worked.
88+
> **Now folded in and the staging file removed** — see the "Geometric covariance →
89+
> 5a" section below.
8990
9091
### Key findings from the current notebooks
9192

@@ -155,6 +156,33 @@ Per repo convention: edit the `.py`, then `jupytext --sync`; re-run
155156

156157
---
157158

159+
## Geometric covariance → 5a ✅ IMPLEMENTED
160+
161+
**Finding:** 5a already had its own "Covariance as geometry" section (5-panel
162+
isotropic/stretched/tilted comparison, built around `add_covariance_ellipse`) leading
163+
into PCA — written independently of the M3 staging file, with different (wine-
164+
dataset-oriented) framing. The staging file's content was therefore mostly
165+
**redundant**, not missing. Two things it had that 5a didn't:
166+
167+
1. A **badged exercise** on reading the panels (5a had the same three questions as
168+
an unbadged "Discussion").
169+
2. An **interactive shape explorer** (sliders for `std_x`, `std_y`, `rho`).
170+
171+
**Fold-in:** converted 5a's discussion into a badged exercise
172+
(`id="ex-covariance-shapes"`), then added the interactive explorer as a new
173+
`plot_covariance_explorer` cell reusing 5a's existing `add_covariance_ellipse`
174+
(overlaying eigenvector arrows), with its own badged exercise
175+
(`id="ex-covariance-explorer"`). Badges regenerated via
176+
`scripts/add_exercise_badges.py`; notebook re-executed
177+
(`CELL_TIMEOUT=300 scripts/execute_notebooks.sh` — the default 120s timeout was too
178+
short for an unrelated pre-existing t-SNE cell later in 5a); book re-rendered clean.
179+
180+
`notebooks/Notebook_5/_staging_covariance_geometry.py`/`.ipynb` **removed** (never
181+
committed, so no history to preserve) — its unique value is now in 5a and the rest
182+
was duplicate of what 5a already had.
183+
184+
---
185+
158186
## Other proposals (from handoff — not yet worked)
159187

160188
*(M1 split — now ✅ implemented; see the M1 section below.)*
@@ -172,9 +200,17 @@ ridge/lasso.
172200
generalization. Recommendation: **keep as a structural keystone**, don't cut to a
173201
buffer or to fund DL (wrong time of year).
174202

175-
🔧 **Type I/II spiral** (cross-module) — introduce in 3b (α, power = 1−β), quantify
203+
✅ **Type I/II spiral** (cross-module) — introduce in 3b (α, power = 1−β), quantify
176204
in 3c (power vs sample size/noise), reconnect in **4b** (confusion matrix FP/FN =
177-
Type I/II; "Error Costs" exercise = cost asymmetry).
205+
Type I/II; "Error Costs" exercise = cost asymmetry). **IMPLEMENTED.**
206+
207+
> 4b already had FP/FN labeled "Type 1"/"Type 2" and an "Error Costs" exercise
208+
> (pre-existing, unrelated to this rework). Closed the loop: relabeled to match 3b/3c's
209+
> Roman-numeral convention, added a "Callback: Type I/II errors, from hypothesis tests
210+
> to classifiers" section connecting the confusion matrix to the $H_0$ table from 3b
211+
> (precision ↔ Type I, recall ↔ Type II, threshold ↔ α), and sharpened the exercise to
212+
> ask which error type dominates per scenario and how that trades off against the
213+
> decision threshold.
178214
179215
---
180216

0 commit comments

Comments
 (0)