Python -Tutorial

Python-HOME Python-Einführung Python-Erste Schritte Python-Syntax Python-Kommentare Python-Variablen Python-Datentypen Python-Zahlen Python-Casting Python-Strings Python-Booleans Python-Operatoren Python-Listen Python-Tupel Python-Sets Python-Wörterbücher Python Wenn ... Sonst Python-While-Schleifen Python-For-Schleifen Python-Funktionen Python-Lambda Python-Arrays Python-Klassen/Objekte Python-Vererbung Python-Iteratoren Python-Bereich Python-Module Python-Daten Python-Mathematik Python-JSON Python-RegEx Python-PIP Python Versuchen ... Außer Python-Benutzereingabe Formatierung von Python-Strings

Umgang mit Dateien

Umgang mit Python-Dateien Python-Dateien lesen Python-Dateien schreiben/erstellen Python-Dateien löschen

Python-Module

NumPy-Tutorial Panda-Komplettlösung Scipy-Tutorial

Python-Matplotlib

Matplotlib-Einführung Matplotlib loslegen Matplotlib-Pyplot Matplotlib-Plotten Matplotlib-Marker Matplotlib-Linie Matplotlib-Labels Matplotlib-Raster Matplotlib-Subplots Matplotlib-Scatter Matplotlib-Bars Matplotlib-Histogramme Matplotlib-Kreisdiagramme

Maschinelles Lernen

Einstieg Mittlerer Medianmodus Standardabweichung Perzentil Datenverteilung Normale Datenverteilung Streudiagramm Lineare Regression Polynomiale Regression Mehrfache Regression Skala Trainieren/Testen Entscheidungsbaum

Python-MySQL

MySQL-erste Schritte MySQL-Datenbank erstellen MySQL-Tabelle erstellen MySQL-Einfügung MySQL-Auswahl MySQL-Wo MySQL-Reihenfolge nach MySQL löschen MySQL-Drop-Tabelle MySQL-Update MySQL-Limit MySQL-Beitritt

Python-MongoDB

Beginnen Sie mit MongoDB MongoDB Datenbank erstellen MongoDB-Create-Sammlung MongoDB-Einfügung MongoDB-Suche MongoDB-Abfrage MongoDB-Sortierung MongoDB löschen MongoDB-Drop-Sammlung MongoDB-Update MongoDB-Limit

Python-Referenz

Python-Übersicht Eingebaute Python-Funktionen Python-String-Methoden Python-Listenmethoden Methoden des Python-Wörterbuchs Python-Tupelmethoden Python-Set-Methoden Python-Dateimethoden Python-Schlüsselwörter Python-Ausnahmen Python-Glossar

Modulreferenz

Zufallsmodul Anforderungsmodul Statistikmodul Mathe-Modul cMath-Modul

Python-Anleitung

Listenduplikate entfernen Einen String umkehren Fügen Sie zwei Zahlen hinzu

Python-Beispiele

Python-Beispiele Python-Compiler Python-Übungen Python-Quiz Python-Zertifikat

Maschinelles Lernen – Trainieren/Testen


Bewerten Sie Ihr Modell

Beim maschinellen Lernen erstellen wir Modelle, um das Ergebnis bestimmter Ereignisse vorherzusagen, wie im vorherigen Kapitel, wo wir den CO2-Ausstoß eines Autos vorhergesagt haben, wenn wir das Gewicht und die Motorgröße kannten.

Um zu messen, ob das Modell gut genug ist, können wir eine Methode namens Train/Test verwenden.


Was ist Trainieren/Testen

Trainieren/Testen ist eine Methode zum Messen der Genauigkeit Ihres Modells.

Es heißt Train/Test, weil Sie den Datensatz in zwei Sätze aufteilen: einen Trainingssatz und einen Testsatz.

80 % für Schulungen und 20 % für Tests.

Sie trainieren das Modell mit dem Trainingsset.

Sie testen das Modell mit dem Testset.

Das Modell trainieren bedeutet , das Modell zu erstellen .

Das Modell testen bedeutet, die Genauigkeit des Modells zu testen.


Beginnen Sie mit einem Datensatz

Beginnen Sie mit einem Datensatz, den Sie testen möchten.

Unser Datensatz zeigt 100 Kunden in einem Geschäft 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 Anzahl der Minuten dar, bevor ein Kauf getätigt wird.

Die y-Achse stellt den Geldbetrag dar, der für den Kauf ausgegeben wurde.



In Zug/Test aufteilen

Der Trainingssatz sollte eine zufällige Auswahl von 80 % der Originaldaten sein.

Der Testsatz sollte die restlichen 20 % betragen.

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]


Zeigen Sie den Trainingssatz an

Zeigen Sie dasselbe Streudiagramm mit dem Trainingssatz an:

Beispiel

plt.scatter(train_x, train_y)
plt.show()

Ergebnis:

Es sieht aus wie der Originaldatensatz, also scheint es eine faire Auswahl zu sein:


Zeigen Sie das Testset an

Um sicherzustellen, dass das Testing-Set nicht völlig anders ist, werden wir uns auch das Testing-Set ansehen.

Beispiel

plt.scatter(test_x, test_y)
plt.show()

Ergebnis:

Der Testsatz sieht auch wie der ursprüngliche Datensatz aus:


Passen Sie den Datensatz an

Wie sieht der Datensatz aus? Meiner Meinung nach wäre die beste Anpassung eine polynomiale Regression , also ziehen wir eine Linie der polynomialen Regression.

Um eine Linie durch die Datenpunkte zu ziehen, verwenden wir die plot()Methode des Moduls matplotlib:

Beispiel

Zeichnen Sie eine Polynom-Regressionsgerade 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:

Das Ergebnis kann meinen Vorschlag stützen, dass der Datensatz zu einer Polynomregression passt, obwohl es uns einige seltsame Ergebnisse liefern würde, wenn wir versuchen würden, Werte außerhalb des Datensatzes vorherzusagen. Beispiel: Die Linie zeigt an, dass ein Kunde, der 6 Minuten im Geschäft verbringt, einen Einkauf im Wert von 200 tätigen würde. Das ist wahrscheinlich ein Zeichen für Overfitting.

Aber was ist mit dem R-Quadrat-Score? Der R-Quadrat-Score ist ein guter Indikator dafür, wie gut mein Datensatz zum Modell passt.


R2

Erinnerst du dich an R2, auch bekannt als R-Quadrat?

Es misst die Beziehung zwischen der x-Achse und der y-Achse, und der Wert reicht von 0 bis 1, wobei 0 keine Beziehung bedeutet und 1 vollständig verbunden bedeutet.

Das sklearn-Modul hat eine aufgerufene Methode r2_score() , die uns hilft, diese Beziehung zu finden.

In diesem Fall möchten wir das Verhältnis zwischen den Minuten, die ein Kunde im Geschäft verweilt, und dem Geld, das er ausgibt, messen.

Beispiel

Wie gut passen meine Trainingsdaten in eine 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)

Hinweis: Das Ergebnis 0,799 zeigt, dass eine OK-Beziehung vorliegt.

Bringen Sie das Testset mit

Jetzt haben wir ein Modell erstellt, das in Ordnung ist, zumindest was die Trainingsdaten betrifft.

Jetzt wollen wir das Modell auch mit den Testdaten testen, um zu sehen, ob wir das gleiche Ergebnis erhalten.

Beispiel

Lassen Sie uns den R2-Score finden, wenn Sie Testdaten verwenden:

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)

Hinweis: Das Ergebnis 0,809 zeigt, dass das Modell auch zum Testsatz passt, und wir sind zuversichtlich, dass wir das Modell verwenden können, um zukünftige Werte vorherzusagen.


Werte vorhersagen

Nachdem wir festgestellt haben, dass unser Modell in Ordnung ist, können wir mit der Vorhersage neuer Werte beginnen.

Beispiel

Wie viel Geld gibt ein kaufender Kunde aus, wenn er 5 Minuten im Laden bleibt?

print(mymodel(5))

Das Beispiel sagte voraus, dass der Kunde 22,88 Dollar ausgeben würde, was dem Diagramm zu entsprechen scheint: