Maschinelles Lernen - Training/Tests
- Vorherige Seite Vergrößern
- Nächste Seite Entscheidungsbaum
Modellbewertung
In der Maschinenlernen schufen wir Modelle, um die Ergebnisse bestimmter Ereignisse vorherzusagen, wie im letzten Kapitel, als wir das Gewicht und den Hubraum des Autos verstanden und die CO2-Emissionen vorhergesagt haben.
Um zu bewerten, ob das Modell ausreichend gut ist, können wir eine Methode namens Training/Testing verwenden.
Was ist Training/Testing
Training/Testing ist eine Methode zur Messung der Genauigkeit des Modells.
Der Name Training/Testing liegt daran, dass wir den Datensatz in zwei Gruppen aufteilen: Trainingsdatensatz und Testdatensatz.
80% werden für das Training verwendet, 20% für das Testen.
Sie können den Trainingsdatensatz verwenden, um das Modell zu trainieren.
Sie können den Testdatensatz verwenden, um das Modell zu testen.
Das Trainieren des Modells bedeutet das Erstellen des Modells.
Das Testen des Modells bedeutet das Testen der Genauigkeit des Modells.
Beginnen wir mit dem Datensatz.
Beginnen wir mit dem zu testenden Datensatz.
Unser Datensatz zeigt 100 Kunden in den Geschäften und ihre Einkaufsgewohnheiten.
Beispiel
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()
Ergebnis:
Die x-Achse stellt die Minuten vor dem Kauf dar.
Die y-Achse stellt den Betrag dar, den für den Kauf ausgegeben wird.

Teilung von Training/Testing
Das Trainingsset sollte eine zufällige Auswahl von 80% der ursprünglichen Daten sein.
Das Testset sollte 20% der verbleibenden Daten sein.
train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:]
Anzeige des Trainingssets
Anzeige des gleichen Streudiagramms wie dem Trainingsset:
Beispiel
plt.scatter(train_x, train_y) plt.show()
Ergebnis:
Es scheint dem ursprünglichen Datensatz zu ähneln, daher scheint es eine vernünftige Wahl zu sein:

Anzeige des Testsets
Um sicherzustellen, dass das Testset nicht vollständig unterschiedlich ist, müssen wir auch das Testset überprüfen.
Beispiel
plt.scatter(test_x, test_y) plt.show()
Ergebnis:
Das Testset scheint auch dem ursprünglichen Datensatz zu ähneln:

Anpassung des Datensatzes
Wie sieht der Datensatz aus? Ich denke, die beste Anpassung ist eine Polynomregression, daher lassen Sie uns eine Polynomregressionslinie zeichnen.
Um eine Linie durch die Datenpunkte zu zeichnen, verwenden wir den matplotlib-Modul plott()
Methode:
Beispiel
Zeichnen Sie eine Polynomregressionslinie durch die Datenpunkte:
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()
Ergebnis:

Dieses Ergebnis kann unsere Empfehlung unterstützen, eine Polynomregression für den Datensatz zu verwenden, selbst wenn wir versuchen, Werte außerhalb des Datensatzes zu prognostizieren, könnte uns das einige seltsame Ergebnisse bringen. Zum Beispiel: Diese Zeile zeigt, dass ein Kunde 6 Minuten im Geschäft einkaufen würde und eine Transaktion im Wert von 200 EUR abschließen würde. Dies könnte ein Anzeichen für Überanpassung sein.
Aber was ist der R-squared Score? Der R-squared Score zeigt gut die Anpassungsfähigkeit meines Datensatzes an das Modell an.
R2
Denken Sie sich an R2, auch bekannt als R-kвадrat (R-squared)?
die das Verhältnis zwischen den Achsen x und y misst, mit einem Wertebereich von 0 bis 1, wobei 0 kein Verhältnis und 1 eine vollständige Korrelation bedeutet.
Der sklearn-Modul hat eine Funktion namens rs_score()
dieser Methode, die uns helfen wird, diese Beziehung zu finden.
Hier müssen wir das Verhältnis zwischen der Zeit, die der Kunde im Geschäft verbringt, und dem Betrag, den er ausgibt, messen.
Beispiel
Wie gut passt unser Trainingsdaten in der 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)
Anmerkung:Das Ergebnis 0.799 zeigt eine gute Beziehung.
Einführung des Testsets
Zumindest im Bereich der Trainingsdaten haben wir jetzt ein gutes Modell aufgebaut.
Dann müssen wir Testdaten verwenden, um das Modell zu testen, um zu überprüfen, ob dasselbe Ergebnis gegeben wird.
Beispiel
Lassen Sie uns bestimmen, ob die R2-Kennzahl während der Verwendung der Testdaten bestätigt wird:
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)
Anmerkung:Das Ergebnis 0,809 zeigt, dass das Modell auch für den Testkörper geeignet ist, und wir sind sicher, dass wir das Modell zur Vorhersage zukünftiger Werte verwenden können.
Vorhersagewert
Jetzt haben wir bestätigt, dass unser Modell gut ist, und können mit der Vorhersage neuer Werte beginnen.
Beispiel
Wie viel wird der Kunde ausgeben, wenn er/sie 5 Minuten im Geschäft bleibt?
print(mymodel(5))
Dieser Fall prognostiziert, dass der Kunde 22,88 US-Dollar ausgegeben hat, was scheinbar mit dem Diagramm übereinstimmt:

- Vorherige Seite Vergrößern
- Nächste Seite Entscheidungsbaum