▶︎ De optionele grafische interface — zet een project op, stel je configuratie in en draai je eerste prognose, zonder één regel terminal.
Zo start je de interface hierboven (vanuit een clone van deze repository):
uv run --extra gui python -m gui
Open daarna http://localhost:8080 in je browser. Zie Grafische interface voor de volledige uitleg — of gebruik de CLI hieronder.
📦 Aan de slag
Vereisten: Python 3.12
Installeer met uv:
uv tool install studentprognose
Heb je uv nog niet? Eenmalig installeren met
curl -LsSf https://astral.sh/uv/install.sh | sh(macOS/Linux) ofpowershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"(Windows). Voor pip-instructies, zie de documentatie.
Na installatie:
studentprognose init # mapstructuur aanmaken + demodata downloaden (optioneel)
studentprognose -d c -y 2024 # eerste prognose op demodata
init vraagt of je demodata wilt downloaden (6 MB, beide sporen) zodat je direct kunt starten. Kies n als je meteen je eigen data wilt gebruiken.
Voor geautomatiseerde runs (cron, taakplanner) — sla de interactieve prompt over:
studentprognose -w 6 -y 2024 --yes
Zie de documentatie voor een complete walkthrough met uitleg over Python-installatie, data klaarzetten en veelvoorkomende fouten.
Waarom dit model?
Dit model is gebouwd voor data-analisten bij Nederlandse onderwijsinstellingen die werken met Studielink-data. Je hebt geen machine learning-expertise nodig.
| Bring Your Own Data | Je levert je eigen data aan — er wordt niets extern gedeeld |
| Privacy-vriendelijk | Draait volledig lokaal op je eigen machine |
| Open source | Transparant, aanpasbaar en gratis te gebruiken |
| Demodata via init | Direct uitproberen zonder eigen data — studentprognose init downloadt 6 MB demodata (beide sporen) op aanvraag |
📊 Presentatie
Een introductie tot Studentprognose (HOlink 2026): waarom instroomprognose lastig is, hoe het model werkt en hoe je ermee aan de slag gaat.
🛠️ Aan de slag voor ontwikkelaars
Via de broncode (met demodata):
# 1. Installeer uv (zie https://docs.astral.sh/uv/getting-started/installation/)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 2. Clone de repository
git clone https://github.com/cedanl/studentprognose.git
cd studentprognose
# 3. Draai het model met demodata
uv run studentprognose -w 6 -y 2020
🖥️ Grafische interface (optioneel)
Liever klikken dan typen? Er is een optionele webinterface (NiceGUI) die de CLI omhult — een project opzetten, de configuratie instellen en voorspellingen draaien, zonder terminalkennis. Je draait haar vanuit een clone van deze repository:
uv run --extra gui python -m gui
Open daarna http://localhost:8080 in je browser. De interface is een schil rond dezelfde CLI; alles wat je in de GUI doet kun je ook op de opdrachtregel doen. Zie Grafische interface in de documentatie.
✨ Gebruik
studentprognose -w 6 -y 2024 # specifieke week en jaar
studentprognose -w 10 : 20 -y 2023 # weekbereik
studentprognose -d c # alleen cumulatief spoor
studentprognose -d c --institution 21PC # scoop de teldata op je eigen instelling
studentprognose -y 2023 2024 -w 10 : 20 -d b # meerdere jaren, beide sporen
studentprognose benchmark -d c -w 12 # vergelijk alternatieve modellen
studentprognose tune -d c -w 12 # stem hyperparameters af (cumulatieve regressor)
| Vlag | Beschrijving | Opties |
|---|---|---|
-w |
Voorspelweek(en) | weeknummers of bereik, bijv. 10 : 20 |
-y |
Voorspeljaar(en) | bijv. 2024 of 2023 2024 |
-d |
Dataset | individual, cumulative, both (standaard) |
--institution |
Beperk teldata tot instelling(en) | Brincode(s), bijv. 21PC; standaard alle |
--noetl |
Sla ETL over | als je al verwerkte data in data/input/ hebt |
--yes |
Sla interactieve prompts over | voor CI/CD en cron |
--no-warnings |
Onderdruk UserWarning-meldingen | als bekende warnings de uitvoer onoverzichtelijk maken |
Naast voorspellen kun je met het benchmark-subcommando alternatieve ML-modellen vergelijken op je eigen data:
studentprognose benchmark -d c # vergelijk cumulatieve modellen
Zie de documentatie voor alle vlaggen, configuratie, validatie-instellingen en uitgebreide voorbeelden, en Benchmarks voor de modelvergelijking.
📁 Beschrijving van bestanden
Input
| Bestand | Beschrijving |
|---|---|
| individual | Individuele (voor)aanmeldingen per student. Voedt het individueel model (XGBoost classifier + SARIMA) en levert de SARIMA_individual voorspelling. |
| cumulative | Aantal aanmeldingen per opleiding, herkomst, jaar, week en herinschrijving. Wordt gebruikt voor de SARIMA_cumulative voorspelling. Verkregen via Studielink. |
| latest | Per opleiding, herkomst, jaar en week: aanmeldingen, voorspellingen en foutwaarden (MAE/MAPE). |
| student_count_first-years | Werkelijk aantal eerstejaars studenten per jaar, opleiding en herkomst. |
| student_volume | Werkelijk totaal aantal ingeschreven studenten per jaar, opleiding en herkomst (alleen nodig bij -sy v). |
| weighted_ensemble | Gewichten per model voor de ensemble-voorspelling. |
Output
| Bestand | Beschrijving |
|---|---|
| output_prelim.xlsx | Voorlopige output met alle voorspellingen van de huidige run. |
| output_first-years.xlsx | Volledige output met voorspellingen voor eerstejaars studenten. |
| output_volume.xlsx | Volledige output met volume-voorspellingen (totaal). |
🏗️ Architectuur
Pipeline executievolgorde
Gedeelde stappen (alle modi):
| Stap | Fase | Bestand |
|---|---|---|
| 1 | CLI parsing | cli.py |
| 2 | Validatie ruwe data (skip met --noetl) |
data/validation |
| 3 | ETL (skip met --noetl) |
data/etl |
| 4 | Configuratie laden | config.py |
| 5 | Data laden | data/loader → data/preprocessing/add_zero_weeks |
| 6 | CI subset (indien --ci) |
utils/ci_subset |
Modus-specifieke stappen (vervolgen op de gedeelde stappen):
| Stap | Fase | Individual (-d i) |
Cumulative (-d c) |
Both (-d b) |
|---|---|---|---|---|
| 7 | Preprocessing | strategies/individual |
strategies/cumulative |
individual → cumulative |
| 8 | Filtering | strategies/base |
strategies/base |
strategies/base |
| 9 | Classificatie | models/xgboost_classifier |
— | models/xgboost_classifier |
| 10 | Transformatie | data/transforms |
— | data/transforms |
| 11 | SARIMA | models/sarima (individual) |
models/sarima → data/transforms |
models/sarima (both) |
| 12 | XGBoost regressor | — | models/xgboost_regressor |
models/xgboost_regressor |
| 13 | Ratio model | — | models/ratio |
models/ratio |
| 14 | Postprocessing + Opslaan | output/postprocessor |
output/postprocessor |
output/postprocessor |
Zie doc/PIPELINE.md voor de gedetailleerde end-to-end pipeline (inclusief Mermaid-diagrammen). Voor een uitleg van het individueel spoor, zie Individueel model in de methodologische documentatie.
🤝 Bijdragen
Dit project wordt actief onderhouden door CEDA. Wil je bijdragen of meedenken? Sluit je aan bij de werkgroep.
🆘 Ondersteuning
Voor vragen of problemen:
- GitHub Issues: Probleem melden
Metadata
Release files for studentprognose 1.6.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| studentprognose-1.6.2.tar.gz | 7.4 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| studentprognose-1.6.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 7.6 MB
Release files / studentprognose-1.6.2.tar.gz
| Download URL | studentprognose-1.6.2.tar.gz |
|---|---|
| Size | 7.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
40d60d3d9479ec33b9c32b1f7cfc9df80ddf70da8c1e44a9eff293d615846522
|
|
BLAKE2b-256 checksum How to use checksums |
cc98c9a0af645083f0616d2d771a76cacb50c6d2df52d67007a883ed3b8657e1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logRelease files / studentprognose-1.6.2-py3-none-any.whl
| Download URL | studentprognose-1.6.2-py3-none-any.whl |
|---|---|
| Size | 179.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
17f06b128c082b84cd3c65daaba38491a12a2a3bcf8730b3d555883b3dcd8231
|
|
BLAKE2b-256 checksum How to use checksums |
547afa9ac972686eb98b5704ec29377dd344e90ae75c50a192e147ef7853b962
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency log