jupyter notebooks

setup

  1. open “anaconda prompt”
  2. type and run conda create -n "datascience"
  3. type and run conda activate datascience
  4. type and run conda install pip
  5. type and run pip install notebook
  6. type and run jupyter notebook

maak de dir niet startend met een punt :3

  1. pip install pandas
  2. pip install numpy
  3. pip install seaborn

re-launch

  1. open “anaconda prompt”
  2. type and run conda activate datascience
  3. 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.

Boxplot voorbeeld

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.

Voorbeeld normale distributie

🔗 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

CI voorbeeld Formule


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 A1Type A2Type A3
Categorie B11258
Categorie B24152
Categorie B37310

🔸 stack() en unstack() in pandas

  • unstack(): rij-index → kolommen
  • stack(): 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 op iris[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:

  1. Bereik of standaarddeviatie van de target
  2. 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.