Maskininlärning - Träning/test
- Föregående Sida Zooma
- Nästa Sida Beslutsdjup
Evaluera modellen
I maskininlärning skapar vi modeller för att förutsäga resultatet av vissa händelser, precis som i föregående kapitel när vi förutsåg koldioxidutsläppet från bilar när vi förstod vikten och motorns effekt.
För att mäta om modellen är tillräckligt bra, kan vi använda en metod som kallas träning/test.
Vad är träning/test
Träning/test är en metod för att mäta modellens noggrannhet.
Anledningen till att det kallas träning/test är att vi delar upp datasetet i två grupper: trändataset och testdataset.
80% används för träning, 20% används för test.
Du kan använda trändataset för att träna modellen.
Du kan använda testdataset för att testa modellen.
Träna modellen innebär att skapa modellen.
Testa modellen innebär att testa modellens noggrannhet.
Börja med dataset.
Börja med att testa dataset.
Vår dataset visar 100 kunder i affären och deras inköpsvanor.
Exempel
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()
Resultat:
X-axeln representerar antalet minuter innan köp.
Y-axeln representerar beloppet som spenderas på köp.

Dela upp träning/TEST
Träningset bör vara en slumpmässig urval av 80% av det ursprungliga datasetet.
Testdatasetet bör vara de resterande 20%.
train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:]
Visa träningset
Visa samma scatterplot som träningset:
Exempel
plt.scatter(train_x, train_y) plt.show()
Resultat:
Det ser ut som det ursprungliga datasetet, så det verkar vara ett rimligt val:

Visa testdatasetet
För att säkerställa att testdatasetet inte är helt annorlunda måste vi också titta på testdatasetet.
Exempel
plt.scatter(test_x, test_y) plt.show()
Resultat:
Testdatasetet ser också ut som det ursprungliga datasetet:

Passa datasetet
Hur ser datasetet ut? Jag tror att det bästa är att passa ett polynomregression, så låt oss rita en polynomregressionlinje.
För att rita en linje genom datapunkterna använder vi matplotlib-modulens plott()
Metod:
Exempel
Rita en polynomregressionlinje genom datapunkterna:
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()
Resultat:

Detta resultat kan stödja vårt förslag att använda polynomregression för att passera datasetet, även om vi försöker förutsäga värden utanför datasetet kan ge oss några konstiga resultat. Till exempel: denna rad indikerar att en kund handlar i 6 minuter i affären, kommer att slutföra ett köp värderat till 200. Detta kan vara ett tecken på överfitting.
Men vad är R-squared score? R-squared score visar mycket bra hur väl min dataset passar modellen.
R2
Kom ihåg R2, också kallad R-kvadrat (R-squared)?
Den mäter förhållandet mellan x-axeln och y-axeln, med ett värde på 0 till 1, där 0 betyder inget förhållande och 1 betyder fullt förhållande.
Sklearn-modulen har en modul som heter rs_score()
Metoden, som kommer att hjälpa oss att hitta detta förhållande.
Här måste vi mäta kundernas tid i affären och hur mycket de spenderar.
Exempel
Hur passar vår träningdata i polynomregression?
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)
Kommentar:Resultatet 0.799 visar att relationen är bra.
Introducera testdataset
För närvarande, minst i träningdata, har vi byggt ett bra modell.
Sedan, måste vi använda testdata för att testa modellen för att kontrollera om den ger samma resultat.
Exempel
Låt oss fastställa R2-score när vi använder testdata:
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)
Kommentar:Resultatet 0.809 indikerar att modellen också är lämplig för testdata, och vi är övertygade om att vi kan använda modellen för att förutsäga framtida värden.
Förutsägningsvärden
Nu när vi har fastställt att vår modell är bra, kan vi börja förutsäga nya värden.
Exempel
Hur mycket kommer en kund att spendera om han eller hon stannar i butiken i 5 minuter?
print(mymodel(5))
Exempeln förutsäger att kunden har spenderat 22.88 dollar, vilket verkar korrelera med diagrammet:

- Föregående Sida Zooma
- Nästa Sida Beslutsdjup