So erstellen sie einen zug- und testsatz aus einem pandas dataframe


Bei der Anpassung von Modellen für maschinelles Lernen an Datensätze teilen wir den Datensatz häufig in zwei Sätze auf:

1. Trainingssatz: Wird zum Trainieren des Modells verwendet (70–80 % des Originaldatensatzes).

2. Testsatz: Wird verwendet, um eine unvoreingenommene Schätzung der Modellleistung zu erhalten (20–30 % des ursprünglichen Datensatzes).

In Python gibt es zwei gängige Möglichkeiten, einen Pandas-DataFrame in einen Trainingssatz und einen Testsatz aufzuteilen:

Methode 1: Verwenden Sie train_test_split() von sklearn

 from sklearn. model_selection import train_test_split

train, test = train_test_split(df, test_size= 0.2 , random_state= 0 )

Methode 2: Verwenden Sie sample() von Pandas

 train = df. sample (frac= 0.8 , random_state= 0 )
test = df. drop ( train.index )

Die folgenden Beispiele zeigen, wie jede Methode mit dem folgenden Pandas DataFrame verwendet wird:

 import pandas as pd
import numpy as np

#make this example reproducible
n.p. random . seeds (1)

#create DataFrame with 1,000 rows and 3 columns
df = pd. DataFrame ( {' x1 ': np.random.randint (30,size=1000),
                   ' x2 ': np. random . randint (12, size=1000),
                   ' y ': np. random . randint (2, size=1000)})

#view first few rows of DataFrame
df. head ()

        x1 x2 y
0 5 1 1
1 11 8 0
2 12 4 1
3 8 7 0
4 9 0 0

Beispiel 1: Verwenden Sie train_test_split() von sklearn

Der folgende Code zeigt, wie die Funktion train_test_split() von sklearn verwendet wird, um den Pandas-DataFrame in Trainings- und Testsätze aufzuteilen:

 from sklearn. model_selection import train_test_split

#split original DataFrame into training and testing sets
train, test = train_test_split(df, test_size= 0.2 , random_state= 0 )

#view first few rows of each set
print ( train.head ())

     x1 x2 y
687 16 2 0
500 18 2 1
332 4 10 1
979 2 8 1
817 11 1 0

print ( test.head ())

     x1 x2 y
993 22 1 1
859 27 6 0
298 27 8 1
553 20 6 0
672 9 2 1

#print size of each set
print (train. shape , test. shape )

(800, 3) (200, 3)

Aus dem Ergebnis können wir erkennen, dass zwei Sätze erstellt wurden:

  • Trainingssatz: 800 Zeilen und 3 Spalten
  • Testsatz: 200 Zeilen und 3 Spalten

Beachten Sie, dass test_size den Prozentsatz der Beobachtungen aus dem ursprünglichen DataFrame steuert, die zum Testsatz gehören, und dass der Wert random_state die Aufteilung reproduzierbar macht.

Beispiel 2: Verwenden Sie sample() von Pandas

Der folgende Code zeigt, wie Sie mit der Funktion pandas sample() den Pandas DataFrame in Trainings- und Testsätze aufteilen:

 #split original DataFrame into training and testing sets
train = df. sample (frac= 0.8 , random_state= 0 )
test = df. drop ( train.index )

#view first few rows of each set
print ( train.head ())

     x1 x2 y
993 22 1 1
859 27 6 0
298 27 8 1
553 20 6 0
672 9 2 1

print ( test.head ())

    x1 x2 y
9 16 5 0
11 12 10 0
19 5 9 0
23 28 1 1
28 18 0 1

#print size of each set
print (train. shape , test. shape )

(800, 3) (200, 3)

Aus dem Ergebnis können wir erkennen, dass zwei Sätze erstellt wurden:

  • Trainingssatz: 800 Zeilen und 3 Spalten
  • Testsatz: 200 Zeilen und 3 Spalten

Beachten Sie, dass „frac“ den Prozentsatz der Beobachtungen aus dem ursprünglichen DataFrame steuert, die zum Trainingssatz gehören, und dass der Wert „random_state“ die Aufteilung reproduzierbar macht.

Zusätzliche Ressourcen

Die folgenden Tutorials erklären, wie Sie andere häufige Aufgaben in Python ausführen:

So führen Sie eine logistische Regression in Python durch
So erstellen Sie eine Verwirrungsmatrix in Python
So berechnen Sie die ausgewogene Präzision in Python

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert