jupyter notebooks
setup
- open “anaconda prompt”
- type and run
conda create -n "datascience"
- type and run
conda activate datascience
- type and run
conda install pip
- type and run
pip install notebook
- type and run
jupyter notebook
maak de dir niet startend met een punt :3
pip install pandas
pip install numpy
pip install seaborn
re-launch
- open “anaconda prompt”
- type and run
conda activate datascience
- type and run
jupyter notebook
Datasets
kaggle is a website to find datasets, and so is huggingface
GPT summary of notebooks, I will later create my own (accurate) article to replace this:
📊 Statistische Analyse – Overzicht & Uitleg
1. Univariate Analyse – Notebook 1
Analyse van één variabele per keer.
🔹 Categorieel
- Kijk naar hoe vaak elke categorie (key) voorkomt.
- Visualisatie: staafdiagram (bar chart).
🔹 Numeriek
-
Gebruik boxplots om uitbijters te vinden.
-
Kijk naar:
- Gemiddelde
- Mediaan
- Modus
- Bereik
2. Boxplot – Notebook 1
Een boxplot (box-and-whisker plot) laat de spreiding van numerieke data zien.
Onderdelen:
- De box: middenste 50% van de data (Q1 – Q3)
- De lijn in de box: mediaan
- Whiskers: grenzen zonder uitbijters
- Outliers: stipjes buiten normale spreiding
Voorbeeld:
[80, 82, 78, 85, 79, 81, 400] # → 400 is een outlier
3. Distributies – Notebook 2
Geeft inzicht in hoe frequent waarden voorkomen.
🔹 Uniforme Distributie
- Elke waarde even waarschijnlijk.
- Voorbeeld: uitkomsten van een dobbelsteen.
🔹 Normale Distributie (Bell Curve)
- Symmetrisch, meeste waarden rond het gemiddelde.
- Voorbeeld: som van twee dobbelstenen → 7 komt het vaakst voor.
🔗 Meer voorbeelden: Probability in Life 🔗 Meer types distributies: NIST overzicht
4. Centrale Limietstelling (CLT) – Notebook 2
De gemiddelden van willekeurige steekproeven zijn normaal verdeeld – zelfs als de oorspronkelijke data dat niet is!
Wat zegt het?
- Steekproefgemiddelden → normaal verdeeld
- Gemiddelde ≈ populatiegemiddelde
- Spreiding ↓ bij grotere steekproeven
Waarom belangrijk?
- Toepassen van normale verdeling mogelijk
- Betrouwbare uitspraken over populaties
- Werkt ook bij niet-normale data!
5. Betrouwbaarheidsinterval – Notebook 2
Een interval waarbinnen met zekerheid (bijv. 95%) het echte populatiegemiddelde ligt.
Belangrijk:
- 95% betrouwbaarheidsinterval: zegt dat we 95% zeker zijn dat het gemiddelde hierin zit.
- Hogere zekerheid = breder interval
6. Bivariate Analyse – Notebook 3
Analyse van de relatie tussen twee variabelen.
🔹 Mogelijke combinaties:
- Numeriek vs Numeriek
- Numeriek vs Categorieel
- Categorieel vs Categorieel
6.1 Numeriek vs Numeriek
✅ Voorbeelden
- Lichaamslengte vs Schoenmaat
- Omzet per klant vs Klantlevensduur
- Cijfer student vs Aanwezigheidspercentage
🔸 Scatterplot
- X-as = Variabele 1
- Y-as = Variabele 2
- Elk punt = 1 observatie
- Toont: relatie, clusters, uitbijters
🔸 Pearson-correlatie
-
Meet lineaire relatie tussen 2 numerieke variabelen
-
Waarden tussen −1 en +1
- +1: perfecte positieve relatie
- 0: geen relatie
- −1: perfecte negatieve relatie
6.2 Numeriek vs Categorieel
✅ Voorbeelden
- Inkomen vs Opleidingsniveau
- Omzet vs Productcategorie
- Gelukswaardering vs Land
🔸 Gemiddelden per categorie
- Bereken gemiddelde numerieke waarde per categorie
- Voeg betrouwbaarheidsinterval toe voor inzicht in variatie
6.3 Categorieel vs Categorieel
✅ Voorbeelden
- Type klant vs Inbound-kanaal
- Nieuwsbrief-inschrijving vs Churn
- Regio vs Stemgedrag
🔸 Contingentietabel (Crosstab)
Toont hoe vaak elke categoriecombinatie voorkomt:
Type A1 | Type A2 | Type A3 | |
---|---|---|---|
Categorie B1 | 12 | 5 | 8 |
Categorie B2 | 4 | 15 | 2 |
Categorie B3 | 7 | 3 | 10 |
🔸 stack()
en unstack()
in pandas
unstack()
: rij-index → kolommenstack()
: kolommen → rij-index (long format)
🔸 Chi-kwadraat-toets van onafhankelijkheid
Gebruik scipy.stats.chi2_contingency
:
- Test op onafhankelijkheid van twee categorische variabelen.
- p-waarde < 0.05 → geen toeval → verband gevonden
- Vergelijkt werkelijke frequenties met verwachte (indien onafhankelijk)
7. Seaborn Barplot – Notebook 3
seaborn.barplot(x="categorie", y="waarde", data=df)
- Staafhoogte: gemiddelde numerieke waarde per categorie
- Error bar: standaard 95% betrouwbaarheidsinterval
Voordelen:
- Berekening van gemiddelden gebeurt automatisch
- Visuele weergave van onzekerheid
8. NumPy – Notebook 3
NumPy = Numerical Python Snelle berekeningen op grote datasets.
Belangrijkste features:
ndarray
: efficiënte multi-dimensionale array- Statistiek, algebra, random waarden, wiskundige functies
- Basis voor pandas, scikit-learn, enz.
Waarom gebruiken?
- Supersnel
- Compacte syntaxis
- Krachtige functies voor wetenschappelijke berekeningen
9. Classificatie – Notebook 4
Analyse van een categorische target‑variabele.
🔹 Voorbeelden classificatietaken
- Voorspel of een klant zal churnen
- Voorspel of een klant een bepaald product zal gebruiken
- Label e‑mail als spam of niet
- Label financiële transactie als frauduleus
- Label social‑media‑bericht als positief, neutraal of negatief
- Voorspel of een bankklant zijn lening kan terugbetalen
🔸 Veelgebruikte algoritmen
- Beslissingsbomen
- Random forests
- Logistic regression
- Neurale netwerken
- Naive Bayes
9.1 Beslissingsboom – Interpretatie
- samples = 150 Totaal aantal voorbeelden in de data.
- value = [50, 50, 50] Aantal voorbeelden per klasse (setosa, versicolor, virginica).
- gini = 0.667 Mate van impurity (hoe gemixt de klassen zijn).
- petal_length ≤ 2.45 Splitsingscriterium: alle voorbeelden met petallengte ≤ 2.45 gaan links, de rest rechts.
- class (voorspelde klasse) De klasse met de meeste voorbeelden in dat node. Bij een gelijkspel wordt vaak de eerste in lexicografische volgorde gekozen (bijv. setosa).
9.2 Model Evaluatie
🔹 Voorspellingen
- Het getrainde model (
dt
) maakt voorspellingen opiris[features]
(bv.sepal_length
,petal_length
). - Output: de classe (‘setosa’, ‘versicolor’, ‘virginica’) per rij.
🔹 Train/Test split
- Waarom? Simuleer prestaties op onbekende data. Voorkom overfitting.
test_size=0.3
(70/30 split): gangbare verdeling voor kleine datasets.stratify=y
: behoudt proporties van elke klasse in train én test.random_state=42
: maakt de split reproduceerbaar.
🔹 Overfitting
Training Accuracy: 83.8%
Test Accuracy: 73.3%
- Interpretatie: Goede trainingscore, maar lagere testscore → model leert deels toevallige patronen.
- Milde overfitting: ~10% drop tussen train en test.
10. Regressie – Notebook 4
Analyse van een numerieke target‑variabele.
🔹 Voorbeelden regressietaken
- Voorspel de huisprijs op basis van kenmerken
- Voorspel het salaris dat een student later verdient
- Voorspel de temperatuur van morgen
🔸 Veelgebruikte algoritmen
- Lineaire regressie
- Beslissingsbomen
- Random forests
- Neurale netwerken
10.1 Model Evaluatie: RMSE
🔹 Root Mean Squared Error (RMSE)
-
Geeft de gemiddelde fout in dezelfde eenheid als de target.
-
Formule:
✅ Voorbeeld
- RMSE ≈ 0.46 cm voor
sepal_length
(bereik ~ 4.3–7.9 cm). - Betekenis: gemiddelde fout < 0.5 cm → acceptabel.
- Kleine kloof tussen train/test → weinig overfitting, goede generalisatie.
🔸 Regel van duim
(gpt you can’t just translate the words wthout translating the meaning)
Vergelijk RMSE met:
- Bereik of standaarddeviatie van de target
- Baseline model (bv. constant voorspellen van het gemiddelde)
11. Random Forest – *Notebook 5
Random Forest is een krachtig ensemble-algoritme dat bestaat uit een verzameling beslissingsbomen, getraind op verschillende bootstrap-samples van de data. Door de uitkomsten van alle bomen te middelen (bagging), vermindert het model variantie en overfitting.
🔹 Belangrijke parameters
- n_estimators: aantal bomen in het bos.
- max_depth: maximale diepte van elke boom.
🔹 Voorbeelden keuze algoritme
✅ Waarom Random Forest
-
Robuustheid tegen ruis & outliers
- Elke boom wordt op een andere subset van de data en features getraind, waardoor uitschieters minder invloed hebben.
-
Vermindert overfitting
- De gemiddelde voorspelling van vele bomen heeft vaak minder variantie dan een enkele boom, voor betere generalisatie.
✅ Wanneer Decision Tree
-
Interpretatie & uitlegbaarheid
- Een enkele boom levert heldere regels die gemakkelijk te visualiseren en te begrijpen zijn.
-
Snelle prototyping op kleine datasets
- Minder rekenintensief en snel te trainen wanneer dataset en feature-aantal beperkt zijn.