Skip to content

feat: voeg eduplan/config.yaml toe#14

Open
StevenRamondt wants to merge 6 commits into
mainfrom
feat/eduplan-config-yaml
Open

feat: voeg eduplan/config.yaml toe#14
StevenRamondt wants to merge 6 commits into
mainfrom
feat/eduplan-config-yaml

Conversation

@StevenRamondt
Copy link
Copy Markdown

Summary

  • Voegt eduplan/config.yaml toe als centrale plek voor alle deployment-specifieke instellingen
  • Verwijdert hardcoded waarden uit backend/main.py, backend/trainer.py en shared/data_prep.py
  • Sluit aan op de splitsing die student-signal's eigen config.yaml beschrijft: "data paths and column names belong in the consuming repo"

Verplaatst naar config.yaml:

  • Modelpaden (backend/model.joblib, model_custom.joblib, features JSON)
  • Kolomnamen (Dropout, Studentnummer, exclude-lijst)
  • Risico-drempelwaarden (0.35 / 0.65)
  • SHAP-instellingen (kwaliteitsdrempel, top-N factoren, exclude-kolommen)
  • LLM-model (gpt-4.1)
  • Download-URLs en outputpaden voor data_prep.py
  • Fallback RF-parameter grid in trainer.py

Test plan

  • uv run pytest tests/ — 38 passed
  • uv run ruff check — geen fouten
  • Handmatig testen: backend opstarten en /rank_students aanroepen

🤖 Generated with Claude Code

StevenRamondt and others added 6 commits April 20, 2026 09:20
Alle deployment-specifieke waarden (modelpaden, drempelwaarden, kolomnamen,
download-URLs, SHAP-instellingen, LLM-model) verplaatst naar config.yaml.
Sluit aan op de splitsing die student-signal's eigen config.yaml beschrijft:
"data paths and column names belong in the consuming repo".

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Bij het trainen van een custom model worden nu ook de fitted KNNImputer
en MinMaxScaler naast het model opgeslagen. Bij inferentie (/rank_students,
/predict_dropout) wordt de imputer toegepast op inkomende data zodat
NaN-waarden consistent worden behandeld als tijdens training.

Wacht op student-signal PR #4 (feat/expose-knn-imputer) voor de imputer
beschikbaar is via PreparedData.imputer.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…der doelkolom

- trainer.py: verwijder exclude_columns vóór prepare() zodat Naam/Opleiding/Klas/Mentor
  niet als one-hot dummies in het model terechtkomen
- trainer.py: sla een inferentie-imputer op gefitst op prepared.X_train (post-encoding,
  zonder Dropout) — de imputer van prepare() bevat de doelkolom en crasht bij inferentie
- main.py: _apply_imputer() gebruikt feature_names_in_ zodat alleen de juiste kolommen
  worden getransformeerd

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Splitst de enkele data-upload in twee:
- Upload 1 (historische data met Dropout) → modeltraining
- Upload 2 (huidig cohort zonder Dropout) → ranking/voorspelling

Voegt _match_kolommen() en _feedback_upload() toe als gedeelde helpers
zodat de kolom-matching logica niet gedupliceerd wordt.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Plotly interpreteerde Studentnummers (bijv. "420371") als numerieke waarden
en maakte een schaal van 350k–450k. Door een "Student "-prefix toe te voegen
worden ze altijd als tekst herkend.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@StevenRamondt StevenRamondt marked this pull request as ready for review April 21, 2026 11:50
@StevenRamondt StevenRamondt requested a review from EdF2021 April 21, 2026 11:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant