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.0

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.0
File Size Uploaded
studentprognose-1.6.0.tar.gz 7.2 MB Details

Built distribution (wheel)

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

Total release size: 7.3 MB

Release files / studentprognose-1.6.0.tar.gz

Download URL studentprognose-1.6.0.tar.gz
Size 7.2 MB
Tags Source
SHA-256 checksum
How to use checksums
48b0ba5827cbff97d7837d5827ee1b313ac6e16cb47f300eb5c44613286ac744
BLAKE2b-256 checksum
How to use checksums
dc0bfdada5181aff1af44441158316380697ee3ce8b0f5c1c90b9d87e304812d
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 Sep 24, 2026.

Transparency log

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

Download URL studentprognose-1.6.0-py3-none-any.whl
Size 173.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
afaa3aa12754be5b53489b2f6936ca3c982fa7a9296c9ff086c0202a36c17395
BLAKE2b-256 checksum
How to use checksums
ddcf4f6afed388e620124c760ce75213d3bb46c8180373ac0aa95378fdddda2f
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 Sep 24, 2026.

Transparency log

Release history Release notifications | RSS feed

1.6.3

2 release files

1.6.2

2 release files

1.6.1

2 release files

This release

1.6.0 This release

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