Studentprognose tool voor het voorspellen van eerstejaars instroom in het hoger onderwijs
Project description
📦 Aan de slag
# 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 main.py
[!NOTE] Demodata is meegeleverd in
data/input, zodat je direct kunt starten. Controleer welke jaren en weken beschikbaar zijn — zonder specificatie gebruikt het script de huidige week, wat mogelijk niet werkt met de meegeleverde data.
🗃️ 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.
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 |
✨ Gebruik
Jaren en weken
Specificeer jaar en week met -y en -w:
uv run main.py -w 6 -y 2024
uv run main.py -W 1 2 3 -Y 2024
uv run main.py -year 2023 2024
uv run main.py -week 40 41
Gebruik slicing voor een reeks weken:
uv run main.py -w 10 : 20 -y 2023
Datasets
Er zijn twee datasets beschikbaar: individual (per student) en cumulative (geaggregeerd per opleiding/herkomst/jaar/week). Standaard worden beide gebruikt.
uv run main.py -d individual
uv run main.py -D cumulative
uv run main.py -dataset both
Configuratie
Het standaard configuratiebestand is configuration/configuration.json. Dit kan worden overschreven:
uv run main.py -c pad/naar/configuration.json
uv run main.py -configuration langer/pad/naar/config.json
Uitgebreid voorbeeld
Voorspel eerstejaars voor 2023 en 2024, weken 10 t/m 20, met beide datasets:
uv run main.py -y 2023 2024 -w 10 : 20 -d b
Voorspel eerstejaars voor collegejaar 2025/2026, week 5, alleen cumulatief:
uv run main.py -y 2025 -w 5 -d c
Syntax overzicht
| Instelling | Korte notatie | Lange notatie | Opties |
|---|---|---|---|
| Voorspellingsjaren | -y of -Y |
-year |
Eén of meer jaren, bijv. 2023 2024 |
| Voorspellingsweken | -w of -W |
-week |
Eén of meer weken, bijv. 10 11 12 |
| Slicing | Gebruik : voor reeksen, bijv. 10 : 20 |
||
| Dataset | -d of -D |
-dataset |
i/individual, c/cumulative, b/both |
| Configuratie | -c of -C |
-configuration |
Pad naar configuratiebestand |
📁 Beschrijving van bestanden
Input
| Bestand | Beschrijving |
|---|---|
| individual | Individuele (voor)aanmeldingen per student. Wordt gebruikt voor de SARIMA_individual voorspelling. |
| cumulative | Aantal aanmeldingen per opleiding, herkomst, jaar, week en herinschrijving/hogerejaars. Wordt gebruikt voor de SARIMA_cumulative voorspelling. Verkregen via Studielink. |
| latest | Per opleiding, herkomst, jaar en week: aanmeldingen, voorspellingen en foutwaarden (MAE/MAPE). Wordt gebruikt voor volume- en hogerjaarsvoorspellingen. |
| student_count_first-years | Werkelijk aantal eerstejaars studenten per jaar, opleiding en herkomst. |
| student_count_higher-years | Werkelijk aantal hogerjaars studenten per jaar, opleiding en herkomst. |
| student_volume | Werkelijk totaal aantal studenten (eerstejaars + hogerjaars) per jaar, opleiding en herkomst. |
| 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_higher-years.xlsx | Volledige output met voorspellingen voor hogerjaars 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 | ETL (skip met --noetl) |
etl |
| 3 | Configuratie laden | config.py |
| 4 | Data laden | loader → preprocessing/add_zero_weeks |
| 5 | 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.
🤝 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.1.0.tar.gz.
File metadata
- Download URL: studentprognose-1.1.0.tar.gz
- Upload date:
- Size: 455.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
107d5915ebe75908c565ed659e2cca106a0d65ac4213b10082e55d08289d57bb
|
|
| MD5 |
8bedf967901e00b7afbc22f2f3156254
|
|
| BLAKE2b-256 |
9ddc1ad823569c9093b6d2670e72078ec4fdef28fa1d38e664b08fe64f454084
|
Provenance
The following attestation bundles were made for studentprognose-1.1.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.1.0.tar.gz -
Subject digest:
107d5915ebe75908c565ed659e2cca106a0d65ac4213b10082e55d08289d57bb - Sigstore transparency entry: 1298948634
- Sigstore integration time:
-
Permalink:
cedanl/studentprognose@7c7ac1345eab28771bd3eb818f3f12b7a5b40480 -
Branch / Tag:
refs/tags/v1.1.0 - Owner: https://github.com/cedanl
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@7c7ac1345eab28771bd3eb818f3f12b7a5b40480 -
Trigger Event:
push
-
Statement type:
File details
Details for the file studentprognose-1.1.0-py3-none-any.whl.
File metadata
- Download URL: studentprognose-1.1.0-py3-none-any.whl
- Upload date:
- Size: 32.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 |
cde091ccef92dd61bdec2a6c7029431b36bcd210bb2161a8cadabb9a3330ecb9
|
|
| MD5 |
a72d47fcc2d7de1391ce295ce82ec1fc
|
|
| BLAKE2b-256 |
d900074796848b1609a9ad3256c49b77850dbb20b80d0414ebb998c4e29962be
|
Provenance
The following attestation bundles were made for studentprognose-1.1.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.1.0-py3-none-any.whl -
Subject digest:
cde091ccef92dd61bdec2a6c7029431b36bcd210bb2161a8cadabb9a3330ecb9 - Sigstore transparency entry: 1298948730
- Sigstore integration time:
-
Permalink:
cedanl/studentprognose@7c7ac1345eab28771bd3eb818f3f12b7a5b40480 -
Branch / Tag:
refs/tags/v1.1.0 - Owner: https://github.com/cedanl
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@7c7ac1345eab28771bd3eb818f3f12b7a5b40480 -
Trigger Event:
push
-
Statement type: