Studentprognose tool voor het voorspellen van eerstejaars instroom in het hoger onderwijs
Project description
[!NOTE] Dit model is oorspronkelijk ontwikkeld door Radboud Universiteit en vervolgens samen met CEDA open source gemaakt zodat andere instellingen er ook van kunnen profiteren. Lees meer in het VOX-artikel.
📦 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 + configuratie aanmaken
studentprognose -w 6 -y 2024
init maakt de benodigde mapstructuur aan en legt uit welke bestanden je moet aanleveren.
Voor geautomatiseerde runs (cron, taakplanner) — sla de interactieve prompt over:
studentprognose -w 6 -y 2024 --yes
[!NOTE] Heb je afwijkende kolomnamen in je Studielink-export? Voeg een
"columns"-blok toe aanconfiguration/configuration.json. Zie Configuratie voor uitleg en voorbeelden.
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 |
| Demo data inbegrepen | Direct uitproberen zonder eigen data — demobestanden zitten in data/input_raw/ |
🛠️ 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
[!NOTE] Demodata is meegeleverd in
data/input_raw/, zodat je direct kunt starten. Gebruik-y 2020t/m-y 2024en-w 1t/m-w 52.
🗃️ Studielink Data
[!IMPORTANT] Dit model werkt met Studielink-telbestanden. Je hebt deze data nodig om voorspellingen te maken voor jouw instelling. Demodata is meegeleverd zodat je het model eerst kunt uitproberen.
✨ Gebruik
studentprognose -w 6 -y 2024 # specifieke week en jaar
studentprognose -w 10 : 20 -y 2023 # weekbereik
studentprognose -d c # alleen cumulatief spoor
studentprognose -y 2023 2024 -w 10 : 20 -d b # meerdere jaren, beide sporen
| 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) |
--noetl |
Sla ETL over | als je al verwerkte data in data/input/ hebt |
--yes |
Sla interactieve prompts over | voor CI/CD en cron |
Zie de documentatie voor alle vlaggen, configuratie, validatie-instellingen en uitgebreide voorbeelden.
📁 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 | loader → preprocessing/add_zero_weeks |
| 6 | CI subset (indien --ci) |
utils/ci_subset |
Modus-specifieke stappen:
| Stap | Fase | Individual (-d i) |
Cumulative (-d c) |
Both (-d b) |
|---|---|---|---|---|
| 6 | Preprocessing | strategies/individual |
strategies/cumulative |
individual → cumulative |
| 7 | Filtering | strategies/base |
strategies/base |
strategies/base |
| 8 | Classificatie | xgboost_classifier |
— | xgboost_classifier |
| 9 | Transformatie | transforms |
— | transforms |
| 10 | SARIMA | sarima (individual) |
sarima → transforms |
sarima (both) |
| 11 | XGBoost regressor | — | xgboost_regressor |
xgboost_regressor |
| 12 | Ratio model | — | ratio |
ratio |
| 13 | Postprocessing + Opslaan | postprocessor |
postprocessor |
postprocessor |
Zie de Technische README voor meer details over de architectuur. Voor een end-to-end uitleg van het individueel spoor (inclusief Mermaid-flow), 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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file studentprognose-1.5.0.tar.gz.
File metadata
- Download URL: studentprognose-1.5.0.tar.gz
- Upload date:
- Size: 1.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e8623d14503633dd6964eb4e13064c80f6ffbf8b43803f5c6796f7a82e3a631
|
|
| MD5 |
e347591a45c17723465d0d68f787e76f
|
|
| BLAKE2b-256 |
b272c4177ee24dadf562fe359a9ca26c740d003810401c9528532a03dbecd725
|
Provenance
The following attestation bundles were made for studentprognose-1.5.0.tar.gz:
Publisher:
pypi-publish.yml on cedanl/studentprognose
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
studentprognose-1.5.0.tar.gz -
Subject digest:
8e8623d14503633dd6964eb4e13064c80f6ffbf8b43803f5c6796f7a82e3a631 - Sigstore transparency entry: 1691915125
- Sigstore integration time:
-
Permalink:
cedanl/studentprognose@8ad8cba3c3330d44cc184cf7c8d257887e13b383 -
Branch / Tag:
refs/tags/v1.5.0 - Owner: https://github.com/cedanl
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@8ad8cba3c3330d44cc184cf7c8d257887e13b383 -
Trigger Event:
push
-
Statement type:
File details
Details for the file studentprognose-1.5.0-py3-none-any.whl.
File metadata
- Download URL: studentprognose-1.5.0-py3-none-any.whl
- Upload date:
- Size: 128.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9544fa2e29ede141c41729a6b2ce72fe8ae6b25ad6c758e3b6e0af9cac9c9d2f
|
|
| MD5 |
675bed808897bcb05fabbdbf6dee6f59
|
|
| BLAKE2b-256 |
2e0895bd9b2c3e6fd26bf94485961db785c4ccd5cf1ba17035daa3e5952de987
|
Provenance
The following attestation bundles were made for studentprognose-1.5.0-py3-none-any.whl:
Publisher:
pypi-publish.yml on cedanl/studentprognose
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
studentprognose-1.5.0-py3-none-any.whl -
Subject digest:
9544fa2e29ede141c41729a6b2ce72fe8ae6b25ad6c758e3b6e0af9cac9c9d2f - Sigstore transparency entry: 1691915303
- Sigstore integration time:
-
Permalink:
cedanl/studentprognose@8ad8cba3c3330d44cc184cf7c8d257887e13b383 -
Branch / Tag:
refs/tags/v1.5.0 - Owner: https://github.com/cedanl
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@8ad8cba3c3330d44cc184cf7c8d257887e13b383 -
Trigger Event:
push
-
Statement type: