Skip to main content
Studentprognose

Voorspel je studentinstroom maanden vooruit — met je eigen data, op je eigen machine.

Radboud Universiteit CEDA Contributors GitHub License PyPI
Python GitHub Last Commit Windows macOS Linux


Walkthrough van de grafische interface: project opzetten, configureren en een prognose draaien

▶︎ 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) of powershell -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:


Gebouwd met ❤️ door de CEDANL community

Metadata

Release files for studentprognose 1.6.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for studentprognose 1.6.3
File Size Uploaded
studentprognose-1.6.3.tar.gz 7.4 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for studentprognose 1.6.3
File Interpreter ABI Platform
studentprognose-1.6.3-py3-none-any.whl Python 3 none any Details

Total release size: 7.6 MB

Release files / studentprognose-1.6.3.tar.gz

Download URL studentprognose-1.6.3.tar.gz
Size 7.4 MB
Tags Source
SHA-256 checksum
How to use checksums
4042759098d4c0ec1e11fa738a97020a8d7998052b6e78382f47c53310a877a9
BLAKE2b-256 checksum
How to use checksums
3f37cb36035367521734d511bbc1baaf6d1867d515eaef5b9e0092892b4d8bba
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 2, 2026.

Transparency log

Release files / studentprognose-1.6.3-py3-none-any.whl

Download URL studentprognose-1.6.3-py3-none-any.whl
Size 182.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f53c402e5991d8e49aacb234c3040b72e16363dd2b3676a637f60b91a804a2da
BLAKE2b-256 checksum
How to use checksums
e9c40e36c77d02e874209dd812c1f03b5f839eef292f7ea989ad67449ec64318
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 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.6.3 This release

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.8

2 release files

1.5.7

2 release files

1.5.6

2 release files

1.5.5

2 release files

1.5.4

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page