← Back to CoursesStemExpert
StemExpert
Intermediate · Oplossingen · 39. Data visualiseren en eerste stappen in AI
StemExpert · Brecht Corbeel · schoolium.me
StemExpert
I39. Data visualiseren en eerste stappen in AI — oplossingen
IIntermediate · deel I10 · Ontwerpen en data

Oplossingen · hoofdstuk 39Data visualiseren en eerste stappen in AI

Van logboek naar grafiek naar een model dat zelf zijn regels leert, en wat het niet kan

Uitgewerkte oplossingen bij de 16 opdrachten van het werkboek. Voor de leerkracht, en voor wie zichzelf wil verbeteren nadat hij het eerst zelf probeerde.

5× oefenen6× toepassen5× uitdagen± 497 min
Van logboek naar grafiek naar beslissing: data zijn pas nuttig als je ze eerlijk toont en toetst.
Van logboek naar grafiek naar beslissing: data zijn pas nuttig als je ze eerlijk toont en toetst.
Voor de leerkrachtDeze pagina bevat de antwoorden. Druk het werkboek af zonder deze pagina.
Oefenen

Oefenen

één stap, direct toepassen
39.1

Welke grafiek?

Oefenen3Begrijpen10 min
Kies bij elke vraag een grafiektype en zeg wat er op de assen komt.
  1. a
    (a) Hoe veranderde de pH van de voedingsoplossing tijdens een maand? (b) Welke van de vier goten gaf de zwaarste kroppen? (c) Hangt de EC samen met de hoeveelheid water die de planten opnemen? (d) Hoe verdeeld zijn de massa's van 48 kroppen? (e) Welk deel van het energieverbruik gaat naar lampen, pomp en elektronica?
    (a) Lijngrafiek: tijd (dagen) horizontaal, pH verticaal. (b) Staafdiagram: goot 1 tot 4, gemiddelde massa (g) vanaf 0. (c) Spreidingsdiagram: opgenomen water (L per dag) tegenover EC (mS/cm), één punt per dag. (d) Histogram: klassen van bv. 20 g, aantal kroppen per klasse. (e) Taartdiagram (drie delen) of één gestapelde staaf: 93 % lampen.
39.2

Wat is er mis met deze grafiek?

Oefenen3Analyseren10 min
Deze grafiek stond in het verslag van een groep over de testweek van de klimaatmodule.
0123456720212223242526dag
De grafiek zoals ze in het verslag stond.
  1. a
    Noem minstens vier dingen die ontbreken of misleiden.
    Geen grootheid en eenheid op de y-as (temperatuur in °C?); de x-as zegt alleen 'dag' (welke dag, vanaf wanneer, welke tijdzone?); geen bron of periode; de uren onder 20 °C zijn weggelaten (alle nachten!), zodat de lijn over die gaten heen springt en de module warmer lijkt dan ze was; de as begint bij 20 zonder dat het onderschrift het zegt.
  2. b
    Hoe maak je ze eerlijk en volledig?
    Y-as 'temperatuur (°C)' met alle uren (16 tot 26 °C), x-as 'dagen sinds maandag 12 oktober 2026, 0:00 (UTC+1)', de lijn onderbreken waar data ontbreken, een onderschrift met bron (logger klimaatmodule, testdata hoofdstuk 30).
39.3

Correlatie of oorzaak?

Oefenen3Begrijpen12 min
Welke van de vier verklaringen (oorzaak, gemeenschappelijke oorzaak, omgekeerde richting, toeval of selectie) past het best?
  1. a
    (a) Op dagen dat er meer ijsjes verkocht worden, verdrinken er meer mensen. (b) In de module stijgt de EC als de planten meer water opnemen. (c) Leerlingen die meer bijles volgen, halen lagere punten. (d) In 5 van de 6 weken met een nieuwe filterpomp was het reservoir helderder. (e) Hoe hoger de batterijspanning, hoe warmer de module.
    (a) Gemeenschappelijke oorzaak: warm weer (meer ijs en meer zwemmen). (b) Oorzaak: de planten nemen meer water dan zouten op, dus de oplossing wordt geconcentreerder (hoofdstuk 13). (c) Omgekeerde richting: wie lage punten haalt, krijgt bijles. (d) Toeval of selectie mogelijk: zes weken is weinig, en in die weken kan ook het weer (licht) anders geweest zijn; een eerlijke proef met een controlereservoir is nodig. (e) Gemeenschappelijke oorzaak: de zon laadt de batterij en warmt de module op.
39.4

De boom volgen

Oefenen3Begrijpen8 min
Gebruik de beslisboom uit het handboek: daglicht ≤ 29,5 klx? dan niet slap; anders: vocht ≤ 60,5 %? dan slap, anders niet slap.
  1. a
    Wat voorspelt de boom voor: (a) 28 °C, 45 %, 52 klx; (b) 31 °C, 40 %, 12 klx; (c) 24 °C, 70 %, 38 klx; (d) 22 °C, 55 %, 30 klx?
    (a) licht 52 > 29,5, vocht 45 ≤ 60,5: slap. (b) licht 12 ≤ 29,5: niet slap. (c) licht 38 > 29,5, vocht 70 > 60,5: niet slap. (d) licht 30 > 29,5, vocht 55 ≤ 60,5: slap.
  2. b
    Bij (b) is het 31 °C en de lucht erg droog. Vind je de voorspelling logisch? Wat zegt dat over het model?
    Twijfelachtig: bij 31 °C en 40 % is de lucht heel droog en verdampt de sla ook bij weinig daglicht (de lampen branden dan). In de trainingsdata kwam 31 °C bijna nooit voor zonder veel licht: het model kent die combinatie niet en doet een gok die op zijn twee vragen steunt.
39.5

Juistheid en basislijn

Oefenen4Rekenen12 min
Een model voor 'moet het reservoir bijgevuld worden?' gaf op 100 testdagen: 12 keer juist 'ja', 5 keer gemist, 8 keer vals alarm, 75 keer juist 'nee'.
  1. a
    Zet de getallen in een verwarringsmatrix en bereken de juistheid.
    Rijen genoteerd (ja / nee), kolommen voorspeld: ja-ja 12, ja-nee 5 (gemist), nee-ja 8 (vals alarm), nee-nee 75. Juistheid .
  2. b
    Hoe juist is de basislijn 'altijd nee'? Is het model nuttig?
    Nodig was bijvullen op dagen; 'altijd nee' is juist op 83 dagen: 83 %. Het model is maar 4 procentpunt beter, maar het vindt wel de meeste dagen waarop bijvullen nodig is; de basislijn vindt er geen enkele.
  3. c
    Welk deel van de dagen dat bijvullen nodig was, vond het model?
    (in Expert heet dat de recall).
Toepassen

Toepassen

meerdere stappen, in een context
39.6

De liegfactor van een batterijpictogram

Toepassen5Rekenen15 min
Een folder vergelijkt de energie per kilogram van lood-zuur (35 Wh/kg) en LiFePO4 (110 Wh/kg) met twee batterijtekeningen. De tekening van LiFePO4 is in hoogte én breedte 3,1 keer zo groot.
  1. a
    Bereken het effect in de data en het effect in de tekening (oppervlakte).
    Data: . Tekening: oppervlakte keer, effect .
  2. b
    Bereken de liegfactor. Hoe groot moest de tekening zijn voor een liegfactor 1?
    Liegfactor . Eerlijk: oppervlakte keer, dus hoogte en breedte elk keer.
  3. c
    En als de tekening een driedimensionale batterij is die in alle drie de richtingen 3,1 keer groeit?
    Volume keer: effect 28,8, liegfactor .
39.7

De beste splitsing met de hand

Toepassen5Rekenen20 min
Twaalf inspecties uit de zomerdata, met alleen de luchtvochtigheid en het label: 61 % (slap), 71 % (niet), 64 % (niet), 51 % (slap), 59 % (niet), 75 % (niet), 71 % (niet), 80 % (niet), 58 % (slap), 48 % (slap), 58 % (slap), 76 % (niet).
  1. a
    Sorteer op vochtigheid en bereken voor elke grens het aantal fouten (in elke groep het meest voorkomende label voorspellen).
    Grenzen en fouten (links + rechts): 49,5: 4; 54,5: 3; 58,5: 1; 60,0: 2; 62,5: 1; 67,5: 2; 73,0: 4; 75,5: 5; 78,0: 5.
  2. b
    Welke grens is de beste? Schrijf de regel als een if-vraag.
    De beste grenzen geven 1 fout: 58,5 % en 62,5 %. Kies bv. 58,5 %: 'als vocht_pct ≤ 58,5: slap, anders niet slap'.
  3. c
    Waarom ligt 'slap' bij een lage vochtigheid, en past dat bij de boom van het handboek?
    Droge lucht trekt meer water uit de bladeren (een groot dampdruktekort): de sla verdampt meer dan de wortels opnemen. De boom van het handboek gebruikt dezelfde vraag in zijn tweede niveau (vocht ≤ 60,5 %), na de vraag over het licht.
39.8

Onzuiverheid berekenen

Toepassen5Rekenen15 min
De onzuiverheid van een groep is ; van een splitsing het gewogen gemiddelde van beide groepen.
  1. a
    Bereken de onzuiverheid van groepen met 10 slap / 0 niet, 5 / 5, 9 / 1 en 2 / 6.
    10/0: , 0. 5/5: . 9/1: . 2/6: , .
  2. b
    Een groep van 20 (8 slap, 12 niet) kan gesplitst worden in (A) 7/2 en 1/10 of (B) 8/6 en 0/6. Bereken de onzuiverheid en het aantal fouten van beide. Welke kiest de computer?
    A: groep 9 (): ; groep 11 (): ; gewogen ; fouten . B: groep 14 (): ; groep 6: 0; gewogen ; fouten . De computer kiest A (lagere onzuiverheid, en hier ook minder fouten).
  3. c
    Teken de grafiek van voor van 0 tot 1. Welke soort functie is het, en waar ligt de top?
    Een dalparabool omgekeerd: een kwadratische functie (hoofdstuk 4) met nulpunten 0 en 1 en de top bij (waarde 0,5).
39.9

Python: een grafiek eerlijk maken

Toepassen5Programmeren25 min
Een klasgenoot schreef dit programma voor de energie per dag. Het werkt, maar de grafiek misleidt.
import matplotlib.pyplot as plt

dagen = ["ma", "di", "wo", "do", "vr", "za", "zo"]
verbruik = [1.50, 1.67, 2.15, 1.46, 1.54, 1.61, 2.02]
zon = [1.74, 1.71, 1.27, 2.43, 1.69, 1.66, 1.89]

plt.plot(dagen, verbruik)
plt.plot(dagen, zon)
plt.ylim(1.2, 2.5)
plt.title("De zon doet het veel beter!")
plt.show()
  1. a
    Noem vier problemen met deze grafiek.
    Een lijngrafiek voor aparte dagen (staven horen hier); de y-as begint bij 1,2 (bij staven moet dat 0 zijn); geen legende en geen eenheden op de assen; een titel die een conclusie opdringt die de data niet steunen (op woensdag en zondag was er juist een tekort).
  2. b
    Herschrijf het programma zodat de grafiek eerlijk en volledig is.
    import matplotlib.pyplot as plt
    
    dagen = ["ma", "di", "wo", "do", "vr", "za", "zo"]
    verbruik = [1.50, 1.67, 2.15, 1.46, 1.54, 1.61, 2.02]
    zon = [1.74, 1.71, 1.27, 2.43, 1.69, 1.66, 1.89]
    x = range(len(dagen))
    
    plt.bar([i - 0.2 for i in x], verbruik, width=0.4, label="verbruik")
    plt.bar([i + 0.2 for i in x], zon, width=0.4, label="zonnestroom")
    plt.xticks(list(x), dagen)
    plt.ylim(0, 2.6)
    plt.ylabel("energie per dag (kWh)")
    plt.title("Klimaatmodule, 12 tot 18 oktober 2026 (testdata)")
    plt.legend()
    plt.grid(axis="y")
    plt.show()
39.10

Python: de verwarringsmatrix

Toepassen6Programmeren30 min
Gebruik beslisboom.py uit het handboek (importeer bouw, voorspel, train en test).
  1. a
    Schrijf een functie matrix(boom, rijen) die de vier getallen (juist slap, gemist, vals alarm, juist niet slap) teruggeeft.
    from beslisboom import bouw, voorspel, train, test
    
    
    def matrix(boom, rijen):
        m = {"juist slap": 0, "gemist": 0, "vals alarm": 0, "juist niet slap": 0}
        for r in rijen:
            v = voorspel(boom, r["x"])
            if v == 1 and r["y"] == 1:
                m["juist slap"] += 1
            elif v == 0 and r["y"] == 1:
                m["gemist"] += 1
            elif v == 1:
                m["vals alarm"] += 1
            else:
                m["juist niet slap"] += 1
        return m
    
    
    for d in (1, 2, 4):
        print(d, matrix(bouw(train, d), test))
  2. b
    Bereken de matrix op augustus voor de bomen van diepte 1, 2 en 4. Wat verandert er aan de soorten fouten?
    Met min_blad = 5 geeft het programma: diepte 1: 17 juist slap, 4 gemist, 13 vals alarm, 40 juist niet slap; diepte 2: 13 juist slap, 8 gemist, 5 vals alarm, 48 juist niet slap; diepte 4: 14 juist slap, 7 gemist, 13 vals alarm, 40 juist niet slap. De tweede vraag (vochtigheid) haalt vals alarm weg; dieper verandert weinig of verschuift fouten.
39.11

De testweek in groepen

Toepassen6Analyseren20 min
Uit correlatie.py: overdag is r tussen temperatuur en verbruik −0,40; binnen groepen met gelijk daglicht: donker (onder 5 klx): 0,28; half (5 tot 15 klx): −0,08; licht (boven 15 klx): 0,00.
  1. a
    Leg met een schets (spreidingsdiagram met drie groepen) uit hoe het verband samen kan dalen terwijl het binnen elke groep bijna vlak is.
    Drie wolken punten: de donkere uren links boven (koel, veel lampen), de lichte rechts onder (warm, lampen gedimd), de halve ertussen. Samen liggen ze op een dalende lijn; binnen één wolk is er nauwelijks een helling.
  2. b
    Een bewoner stelt voor: 'Warm de module 's middags op, dan verbruikt ze minder.' Weerleg met deze getallen.
    Binnen gelijk licht is r bijna 0: bij hetzelfde daglicht verbruikt een warmer uur niet minder. Het verband liep via de zon, die de module opwarmt én de lampen laat dimmen. Opwarmen spaart niets; het kost net energie.
  3. c
    Welke proef zou echt aantonen of temperatuur het verbruik beïnvloedt?
    Een proef waarin je alleen de temperatuur verandert (bv. de verwarming op 18 of 22 °C, afwisselend per dag, bij vergelijkbaar licht) en de rest gelijk houdt, met genoeg herhalingen (hoofdstuk 2). Verwacht: het verbruik van de lampen verandert niet, wel dat van de verwarming.
Uitdagen

Uitdagen

transfer, open problemen, leerlijnen combineren
39.12

Bias opsporen

Uitdagen6Analyseren25 min
De inspectierobot (hoofdstuk 33) krijgt een camera. Een groep traint een model dat uit foto's herkent of een krop ziek is. Ze gebruiken 400 foto's: 350 van gezonde kroppen uit de klimaatmodule, 50 van zieke kroppen van het internet. Het model is 96 % juist op een test met 50 foto's uit dezelfde verzameling.
  1. a
    Noem minstens drie vormen van bias in deze data.
    (1) Onevenwicht: 350 gezond tegenover 50 ziek. (2) Herkomst: alle gezonde foto's komen uit de module (zelfde licht, achtergrond, camera), alle zieke van het internet: het model kan leren herkennen 'foto uit de module of niet' in plaats van 'ziek of niet'. (3) De zieke foto's tonen misschien andere rassen of ziektes dan in de module voorkomen. (4) Wie labelde de internetfoto's, en hoe betrouwbaar?
  2. b
    Waarom zegt 96 % hier weinig? Denk aan de basislijn en aan wat het model misschien écht leerde.
    De basislijn 'altijd gezond' is al 87,5 % juist (350/400). En als de test uit dezelfde verzameling komt, kan het model de achtergrond gebruiken: 96 % in de test, maar een zieke krop in de module zou het niet herkennen.
  3. c
    Stel een betere manier voor om data te verzamelen en te toetsen.
    Foto's van zieke én gezonde kroppen uit de module zelf, met dezelfde camera en belichting, gelabeld door twee mensen onafhankelijk; toetsen op foto's van latere weken; per klasse rapporteren hoeveel gemist en hoeveel vals alarm.
39.13

Onderzoek: een beslisboom voor het klaslokaal

Uitdagen6Onderzoeken120 min
Voer de proef van het handboek uit: kan een beslisboom uit de metingen van de logger afleiden of er een raam openstaat?
  1. a
    Formuleer een onderzoeksvraag, de kenmerken die je gebruikt, en hoe je de labels verzamelt.
    Bv. 'Kan een beslisboom uit de temperatuurverandering over 5 minuten afleiden of een raam openstaat?' Kenmerken: ΔT en ΔRV over 5 minuten, eventueel het uur. Labels: open/dicht per minuut volgens het blad.
  2. b
    Verzamel twee dagen data. Maak de kenmerken in Python en toon ze in een geschikte grafiek.
    Per minuut: dT = T(nu) − T(5 min eerder); grafiek van T met de open-perioden als gekleurde banden (lijngrafiek, tijd op de x-as).
  3. c
    Train op dag 1 en toets op dag 2: de boom, de juistheid, de basislijn en de verwarringsmatrix.
    Typisch: eerste vraag 'dT ≤ −0,3 °C?'; juistheid 85 à 95 %, maar de basislijn 'altijd dicht' kan al 90 % zijn als het raam weinig openstond. Kijk vooral naar gemist en vals alarm.
  4. d
    Bespreek: wanneer werkt het model niet, en welke bias zit er in je data?
    Werkt niet als het buiten even warm is als binnen, en geeft vals alarm bij andere afkoeling (klas vertrekt, verwarming uit). Bias: één lokaal, twee dagen, één seizoen, één persoon die labelt.
Zo wordt dit beoordeeld
DataLabels systematisch genoteerd (tijdstip, wie); ontbrekende metingen gemeld; kenmerken zinvol gekozen.
GrafiekPassend type, assen met grootheid en eenheid, open-perioden zichtbaar.
ModelTrain- en testdag gescheiden; boom, juistheid, basislijn en matrix correct.
KritiekGrenzen van het model en bias concreet benoemd, met een verbetervoorstel.
39.14

Habitat: de beslisboom voor extra pompbeurten

Uitdagen7Habitat90 min
De klimaatmodule krijgt een extra pompbeurt van 5 minuten om het halve uur als de boom slappe sla verwacht. Een vals alarm kost 1 Wh (5 minuten van 12 W); een gemiste slappe sla betekent stress voor de planten en misschien randjesbrand (hoofdstuk 12). Op de inspecties van augustus:
regel: slap als licht > grens en vocht ≤ 60,5 %gemistvals alarmjuist
grens 20,0 klx6881 %
grens 25,0 klx6782 %
grens 29,5 klx8582 %
grens 35,0 klx10382 %
grens 40,0 klx12182 %
  1. a
    Welke lichtgrens kies je? Motiveer met de fouten en hun kost.
    Bv. 25 klx: 6 gemist en 7 vals alarm in augustus, tegenover 8 en 5 bij 29,5 klx. Twee gemiste slappe sla minder voor een paar valse alarmen van 1 Wh: een goede ruil. Lager dan 25 levert niets meer op (zie 20 klx).
  2. b
    Schat hoeveel energie de extra pompbeurten in een zomer kosten (92 dagen, overdag 16 halve uren; neem aan dat de regel in ongeveer een derde van die momenten waar is).
    extra beurten van 1 Wh: ±0,5 kWh per zomer. Dat is minder dan de lampen in 4 uur gebruiken: verwaarloosbaar.
  3. c
    Schrijf de functie in C++ met jouw grens, en de voorwaarde die ervoor zorgt dat de extra beurt nooit start als de vlotter droog meldt of de module in ALARM of ONDERHOUD staat (hoofdstuk 32).
    const float LICHT_GRENS = 25.0;   // klx
    const float VOCHT_GRENS = 60.5;   // %
    
    bool extraPompbeurt(float licht_klx, float vocht_pct, bool vlotterDroog, int modus) {
      if (vlotterDroog || modus == ALARM || modus == ONDERHOUD) {
        return false;                   // veiligheid gaat altijd voor
      }
      return licht_klx > LICHT_GRENS && vocht_pct <= VOCHT_GRENS;
    }
  4. d
    Welke bias en welke grenzen van het model noteer je in je portfolio bij deze beslissing?
    Bv.: 'Getraind op juni-juli 2026, alleen om 11, 14 en 17 uur op weekdagen, twee bewoners die verschillend labelen (B sneller slap), één ras in de oudste goot. Niet gebruiken buiten 10 tot 18 uur of buiten de zomer zonder opnieuw te toetsen. Herkent geen pompstoring: daarvoor dienen de vlotter en het alarm. Opnieuw trainen als er een nieuwe zomer data is.'
Zo wordt dit beoordeeld
KeuzeGrens gekozen met de tabel, gemist en vals alarm tegen elkaar afgewogen met de kosten.
EnergieSchatting met eenheden en redelijke aannames; vergeleken met het budget van de module.
CodeCorrecte C++, grens als constante, veiligheid (vlotter, modus) gaat altijd voor.
KritischBias (bewoners, uren, seizoen) en wat het model niet kan (pompstoring) in het portfolio.
39.15

Debat: mag de klimaatmodule zelf beslissen?

Uitdagen6Argumenteren25 min
Stelling: 'Een model dat 82 % juist is, is te onbetrouwbaar om de pomp te laten sturen. Een bewoner moet elke extra pompbeurt goedkeuren.'
  1. a
    Geef twee argumenten voor en twee tegen, met de vier vragen uit het handboek (fout, mens, data, verantwoordelijk).
    Voor: 18 % fouten is veel; bewoners leren van het goedkeuren; niemand is verantwoordelijk als de module zelf beslist. Tegen: een fout kost hier bijna niets (1 Wh of een uur later water), de basisregels (vlotter, alarm) blijven gelden, en een bewoner die 490 keer per zomer moet goedkeuren, klikt op den duur alles blind aan; beter: de module beslist, logt elke beslissing, en een mens kijkt wekelijks het logboek na.
  2. b
    Geef een voorbeeld van een beslissing in het station die een model nooit alleen zou mogen nemen, en waarom.
    Bv. de CO₂-alarmen of de toegang tot de module afschakelen, of beslissen welke bewoner medische hulp nodig heeft: fouten zijn dan ernstig en onomkeerbaar, en er moet een verantwoordelijke mens zijn (Expert, hoofdstuk 44).
39.16

Ontwerp: een dashboard voor de bewoners

Uitdagen6Ontwerpen60 min
De bewoners willen één scherm dat in tien seconden toont hoe het met de klimaatmodule gaat: temperatuur, vocht, energie (zon, verbruik, batterij), het reservoir en de voorspelling van de beslisboom.
  1. a
    Maak een lijst van de vragen die een bewoner zich stelt, en kies bij elke vraag een grafiek of een getal.
    Bv. 'Is het nu te warm?' (getal met kleur tegenover 25/27 °C), 'Hoe was de laatste 24 uur?' (lijngrafiek T en RV), 'Halen we de nacht?' (laadtoestand als balk vanaf 0 %, met de verwachte nacht), 'Zon en verbruik deze week' (staven per dag), 'Reservoir' (niveau in cm met de alarmgrens van 10 cm), 'Slappe sla verwacht?' (ja/nee met '±82 % juist, getraind juni-juli 2026').
  2. b
    Schets het dashboard, met assen, eenheden en kleuren.
    Bv. vier tegels bovenaan (T, RV, laadtoestand, reservoir), daaronder de lijngrafiek van 24 uur en de staven per dag; rood alleen voor alarmen.
  3. c
    Welke misleidingen vermijd je bewust? Hoe toon je dat de voorspelling van de boom onzeker is?
    Staven vanaf 0, één y-as per grafiek, de periode en de tijdzone vermeld, gaten niet overbrugd. De voorspelling als advies met haar juistheid op nieuwe data en de basislijn, niet als zekerheid.
Zo wordt dit beoordeeld
VragenConcrete vragen van gebruikers, elk met een passend grafiektype of getal.
EerlijkAssen, eenheden en periodes; geen afgeknotte staven of twee y-assen; ontbrekende data zichtbaar.
LeesbaarIn tien seconden te lezen: weinig kleuren, belangrijkste bovenaan, grenswaarden aangeduid.
ModelDe voorspelling als advies getoond, met haar foutkans en de datum van het laatste trainen.