Übung: Aufteilen von Daten in Trainings- und Test-Datasets
Im nächsten Schritt sollen die Daten in Trainings- und Testdaten aufgeteilt werden. Wenn Sie dem Machine-Learning-Klassifizierer alle Ihre Daten bereitstellen, kann dieser Ihnen lediglich mitteilen, über welche Daten Sie verfügen. Sie würden jedoch keine exakten Vorhersagen erhalten.
Gründe für das Aufteilen von Daten
Die Bedeutung der Datenaufteilung lässt sich am Beispiel einer Prüfung erklären, die Sie in einem Ausbildungskurs ablegen. Während des gesamten Kurses werden Ihnen Beispielprobleme präsentiert und die zugehörigen Antworten erklärt. Dieses Szenario kommt bei Vorlesungen, Hausarbeiten und praktischen Übungen vor.
Stellen Sie sich einen Kurs vor, bei dem Sie am Tag vor der Prüfung vom Dozenten die genauen Prüfungsaufgaben und die Antworten erhalten. Würden Sie die Prüfung mit Bravour bestehen? Ja!
Würden Sie wissen, ob Sie die Konzepte verstanden haben? Nein. Sie hätten vermutlich eher die Antworten auf die Prüfungsfragen gelernt als die Konzepte, deren Kenntnis durch die Prüfung sichergestellt werden sollte.
Wenn Sie wirklich etwas lernen möchten, sollten Sie mit Problemen üben, zu denen Ihnen die Antworten vorliegen. Wenn Sie sich bei diesen Aufgabenstellungen sicher fühlen, versuchen Sie es mit Problemen, deren Antworten Sie noch nicht kennen. Genau auf diese Weise „lernt“ genau genommen der Machine-Learning-Klassifizierer.
Aufteilen von Daten
Sie möchten Ihre Daten auf vier neue Variablen aufteilen. Sie verfügen bereits über X
und y
, die die Eingabe und die Ausgabe darstellen. Jetzt ist es an der Zeit, beides in Trainings- und Testdaten aufzuteilen.
Durch die Verwendung von scikit-learn und der Teilungsfunktion des Klassifizierers erhalten Sie eine zufällige Stichprobe von X
und y
mit gleicher Reihenfolge. Wenn Sie die Daten nicht nach dem Zufallsprinzip aufgeteilt haben, sondern stattdessen die ersten 80 % der Zeilen für Trainingsdaten verwendet, und den Rest zum Testen belassen haben, würde dies zu Problemen führen.
Nehmen wir beispielsweise an, dass die Daten in der Reihenfolge ihres Datums sortiert werden. Wenn die ersten 240 Zeilen zum Trainieren verwendet würden, würden Sie Ihr Modell mit Daten trainieren, die aus der Zeit vor dem Jahr 1999 stammen. Dieses Szenario stellt ein Problem dar, da sich die Sensoren möglicherweise im Laufe der Zeit geändert haben. Ausschließlich ältere Daten zu betrachten, ist möglicherweise kein guter Indikator für Entscheidungen, die unter Verwendung neuer Technologien getroffen werden.
Fügen Sie den folgenden Code in eine Zelle in Visual Studio Code ein, um die Daten aufzuteilen:
X_train, X_test, y_train, y_test = train_test_split(X,y, test_size=0.2, random_state=99)
Mit diesem Code werden die Daten nach dem Zufallsprinzip in vier Gruppen unterteilt: X_train
, X_test
, y_train
und y_test
. Mit der Funktion train_test_split
von scikit-learn geben Sie vier wichtige Parameter an:
- Eingabedaten:
X
: Alle Spalten, die für die Vorhersage eines Starts verwendet werden sollen - Ausgabedaten:
y
: Das Ergebnis jeder Zeile, unabhängig davon, ob eine Rakete gestartet ist oder nicht - Testgröße:
0.2
: Trainieren mit 80 % der Daten und Testen mit 20 % der Daten ist eine gängige Aufteilung in der Data Science. - Zufälliger Zustand:
99
: Ein zufälliger Seed, der die Zufälligkeit der Datenauswahl verändert
Sie können hierher zurückkehren und die Testgröße und den zufälligen Zustand verändern, um auch andere Optionen auszuprobieren.