De score
Je hebt het fruit verdeeld in een oefenset en een toetsset. Nu toets je: de voorspeller zoekt de buren alleen in de oefenset, en je telt hoeveel stukken uit de toetsset hij goed heeft. Dat aantal is zijn score.
Voorspel
uitslagen = [("appel", "appel"), ("citroen", "appel"), ("banaan", "banaan"), ("appel", "appel")]
goed = 0
for echt, voorspeld in uitslagen:
if echt == voorspeld:
goed = goed + 1
print(goed, "van de", len(uitslagen), "goed")
print(goed / len(uitslagen) * 100, "procent")
Elke uitslag is een tuple van de echte soort en wat de voorspeller zei. Wat print dit programma?
Antwoord
3 van de 4 goed
75.0 procent
De citroen noemde hij een appel. Delen door het aantal en keer 100 geeft het percentage.
Zo werkt het
In de loop over de toetsset geef je voorspel de oefenset als voorbeelden:
voorspel(maten, oefen, k). Klopt de voorspelling met de echte soort, dan
telt hij als goed. Het stuk fruit zelf zit niet in de oefenset, dus het kan
niet zijn eigen buur zijn.
Onderzoek
- Draai de code met
k = 1. Hoeveel van de zes heeft hij goed? - Zet
kop 3. Wordt het beter? - Zet
kweer op 1, en verander de seed in 4. Wat gebeurt er met de score? - Zes stukken fruit is een kleine toets. Wat betekent dat voor een score als "5 van de 6"?
Antwoorden
- Vijf van de zes. De citroen
(8, 6)noemt hij een appel. Een appel(8, 7)en twee citroenen liggen allemaal op afstand 1, en bij gelijke afstand sorteertsortedop de soort: appel komt op alfabet voor citroen. Met één buur beslist dus het toeval van de spelling. - Met
k = 3heeft hij ze alle zes goed: bij(8, 6)stemmen nu twee citroenen mee. - Met seed 4 heeft hij ze alle zes goed, ook met
k = 1. Er zit dan geen enkele citroen in de toetsset, alleen appels en bananen, en die zijn makkelijk. Dezelfde voorspeller lijkt zo beter dan hij is: de score hangt af van welke stukken fruit toevallig in de toets zitten. In de volgende stap zie je daarom per soort hoe het zit. - Eén stuk fruit meer of minder goed scheelt bij zes al 17 procentpunt. Een kleine toets zegt weinig. Met honderden stukken fruit in de toetsset wordt de score betrouwbaarder.
Opdracht: welke heeft hij fout?
Een score zegt hoeveel er fout gaan, maar niet welke. Print van elk stuk
fruit dat de voorspeller fout heeft de maten, de echte soort en de
voorspelling. Met seed 3 en k = 1:
(8, 6) citroen voorspeld: appel
Begin klein, en breid de code stap voor stap uit:
- Draai de code: hij print elk stuk fruit uit de toetsset met zijn soort.
- Zet de voorspelling erachter:
voorspel(maten, oefen, k). - Print alleen de stukken fruit die hij fout heeft. Zet daarna
kop 3.
Tip
== kijkt of twee dingen gelijk zijn. Welk teken kijkt of ze verschillen?
Antwoord
Dit vervangt de loop onderaan de editor:
for maten, soort in toets:
voorspeld = voorspel(maten, oefen, k)
if voorspeld != soort:
print(maten, soort, "voorspeld:", voorspeld)
(8, 6) citroen voorspeld: appel
Met k = 3 print hij niets meer: alle zes zijn goed.
Door naar goed per soort.