Machine Learning - Training/Testing
- Previous Page Zoom
- Next Page Decision Tree
Model evalueren
In de machine learning maken we modellen om de uitkomst van bepaalde gebeurtenissen te voorspellen, net zoals in het vorige hoofdstuk toen we de massa en het motorgedeputeerde begrepen, voorspelden we de CO2-uitstoot van de auto.
Om te meten of het model voldoende goed is, kunnen we een methode gebruiken die training/test heet.
Wat is training/test
Training/test is een methode om de nauwkeurigheid van het model te meten.
Het wordt getiteld training/test omdat we de dataset hebben verdeeld in twee groepen: de trainingsset en de testset.
80% wordt gebruikt voor training, 20% voor testing.
U kunt de trainingsset gebruiken om het model te trainen.
U kunt de testset gebruiken om het model te testen.
Het trainen van het model betekent het creëren van het model.
Het testen van het model betekent het testen van de nauwkeurigheid van het model.
Begin met de dataset.
Begin met de dataset die moet worden getest.
Onze dataset toont 100 klanten in de winkel en hun aankoopgewoonten.
Example
import numpy import matplotlib.pyplot as plt numpy.random.seed(2) x = numpy.random.normal(3, 1, 100) y = numpy.random.normal(150, 40, 100) / x plt.scatter(x, y) plt.show()
Resultaat:
De x-as geeft het aantal minuten voor de aankoop aan.
De y-as geeft het bedrag aan dat wordt uitgegeven.

Trainings-/testverdeling
De trainingsset zou een willekeurige selectie van 80% van de oorspronkelijke gegevens moeten zijn.
De testset zou 20% moeten zijn van de resterende gegevens.
train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:]
Toon de trainingsset
Toon een scatterplot zoals het trainingsset:
Example
plt.scatter(train_x, train_y) plt.show()
Resultaat:
Het ziet eruit als de oorspronkelijke dataset, dus het lijkt een redelijke keuze te zijn:

Toon de testset
Om ervoor te zorgen dat de testset niet compleet anders is, moeten we ook een kijkje nemen naar de testset.
Example
plt.scatter(test_x, test_y) plt.show()
Resultaat:
De testset ziet eruit als de oorspronkelijke dataset:

Fitting van de dataset
Hoe ziet de dataset eruit? Ik denk dat een polynoomregressie het meest geschikt is voor de fitting, dus laten we een polynoomregressielijn tekenen.
Om een lijn door de datapunten te tekenen, gebruiken we de matplotlib-module plott()
Methode:
Example
Tekenen van een polynoomregressielijn door de datapunten:
import numpy import matplotlib.pyplot as plt numpy.random.seed(2) x = numpy.random.normal(3, 1, 100) y = numpy.random.normal(150, 40, 100) / x train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:] mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4)) myline = numpy.linspace(0, 6, 100) plt.scatter(train_x, train_y) plt.plot(myline, mymodel(myline)) plt.show()
Resultaat:

Dit resultaat kan ons advies ondersteunen om een polynoomregressie te gebruiken voor de dataset, zelfs als we proberen waarden buiten de dataset te voorspellen, wat ons enkele vreemde resultaten kan opleveren. Bijvoorbeeld: deze regel suggereert dat een klant die 6 minuten in de winkel heeft geweest, een aankoop van 200 euro heeft gedaan. Dit kan een teken van overfitting zijn.
Maar wat is de R-squared score? De R-squared score geeft goed aan hoe goed mijn dataset past in het model.
R2
Herinner je je R2, ook wel R-kwadraat (R-squared) genoemd?
Die meet de relatie tussen de x-as en de y-as, met waarden van 0 tot 1, waarbij 0 geen relatie betekent en 1 volledige relatie.
De sklearn-module heeft een module genaamd rs_score()
Deze methode, die ons zal helpen om deze relatie te vinden.
Hier willen we de relatie meten tussen de tijd die klanten in de winkel doorbrengen en het bedrag dat ze uitgeven.
Example
Hoe goed passen onze trainingsgegevens in een polynoomregressie?
import numpy from sklearn.metrics import r2_score numpy.random.seed(2) x = numpy.random.normal(3, 1, 100) y = numpy.random.normal(150, 40, 100) / x train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:] mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4)) r2 = r2_score(train_y, mymodel(train_x)) print(r2)
Note:Het resultaat 0.799 toont een goed verband aan.
Introduceren van de testset
Nu hebben we ten minste op het gebied van trainingsgegevens een aardige model opgebouwd.
Vervolgens moeten we testgegevens gebruiken om het model te testen om te controleren of het dezelfde resultaten oplevert.
Example
Let's determine the R2 score when using test data:
import numpy from sklearn.metrics import r2_score numpy.random.seed(2) x = numpy.random.normal(3, 1, 100) y = numpy.random.normal(150, 40, 100) / x train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:] mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4)) r2 = r2_score(test_y, mymodel(test_x)) print(r2)
Note:The result of 0.809 indicates that the model is also suitable for the test set, and we are confident that we can use this model to predict future values.
Predicted Value
Now that we have confirmed that our model is good, we can start predicting new values.
Example
How much money will the customer spend if they stay in the store for 5 minutes?
print(mymodel(5))
This example predicts that the customer spent 22.88 US dollars, which seems to correspond to the chart:

- Previous Page Zoom
- Next Page Decision Tree