So teilen sie daten im training auf & #038; testsätze in r (3 methoden)


Wenn wir Algorithmen für maschinelles Lernen an Datensätze anpassen, teilen wir den Datensatz häufig zunächst in einen Trainingssatz und einen Testsatz auf.

Es gibt drei gängige Methoden zum Aufteilen von Daten in Trainings- und Testsätze in R:

Methode 1: Verwenden Sie Base R

 #make this example reproducible
set. seeds (1)

#use 70% of dataset as training set and 30% as test set
sample <- sample(c( TRUE , FALSE ), nrow(df), replace= TRUE , prob=c( 0.7 , 0.3 ))
train <- df[sample, ]
test <- df[!sample, ]

Methode 2: Verwenden Sie das caTools-Paket

 library (caTools)

#make this example reproducible
set. seeds (1)

#use 70% of dataset as training set and 30% as test set
sample <- sample. split (df$any_column_name, SplitRatio = 0.7 )
train <- subset(df, sample == TRUE )
test <- subset(df, sample == FALSE )

Methode 3: Verwenden Sie das dplyr-Paket

 library (dplyr)

#make this example reproducible
set. seeds (1)

#create ID column
df$id <- 1:nrow(df)

#use 70% of dataset as training set and 30% as test set
train <- df %>% dplyr::sample_frac( 0.70 )
test <- dplyr::anti_join(df, train, by = ' id ')

Die folgenden Beispiele zeigen, wie jede Methode in der Praxis mit dem integrierten Iris-Datensatz in R verwendet wird.

Beispiel 1: Teilen Sie Daten mithilfe von Base R in Trainings- und Testsätze auf

Der folgende Code zeigt, wie die R-Basis verwendet wird, um den Iris-Datensatz in einen Trainings- und Testsatz aufzuteilen, wobei 70 % der Zeilen als Trainingssatz und die restlichen 30 % als Testsatz verwendet werden:

 #load iris dataset
data(iris)

#make this example reproducible
set. seeds (1)

#Use 70% of dataset as training set and remaining 30% as testing set
sample <- sample(c( TRUE , FALSE ), nrow(iris), replace= TRUE , prob=c( 0.7 , 0.3 ))
train <- iris[sample, ]
test <- iris[!sample, ]

#view dimensions of training set
sun(train)

[1] 106 5

#view dimensions of test set
dim(test)

[1] 44 5

Aus dem Ergebnis können wir sehen:

  • Der Trainingssatz ist ein Datenrahmen mit 106 Zeilen und 5 Spalten.
  • Der Test ist ein Datenblock mit 44 Zeilen und 5 Spalten.

Da die ursprüngliche Datenbank insgesamt 150 Zeilen umfasste, enthält der Trainingssatz etwa 106/150 = 70,6 % der ursprünglichen Zeilen.

Wir können auch die ersten Zeilen des Trainingssatzes anzeigen, wenn wir möchten:

 #view first few rows of training set
head(train)

  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
8 5.0 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa

Beispiel 2: Teilen Sie Daten mit caTools in Trainings- und Testsätze auf

Der folgende Code zeigt, wie Sie das caTools- Paket in R verwenden, um den Iris-Datensatz in einen Trainings- und Testsatz aufzuteilen, wobei 70 % der Zeilen als Trainingssatz und die restlichen 30 % als Testsatz verwendet werden:

 library (caTools)

#load iris dataset
data(iris)

#make this example reproducible
set. seeds (1)

#Use 70% of dataset as training set and remaining 30% as testing set
sample <- sample. split (iris$Species, SplitRatio = 0.7 )
train <- subset(iris, sample == TRUE )
test <- subset(iris, sample == FALSE )

#view dimensions of training set
sun(train)

[1] 105 5

#view dimensions of test set
dim(test)

[1] 45 5

Aus dem Ergebnis können wir sehen:

  • Der Trainingssatz ist ein Datenrahmen mit 105 Zeilen und 5 Spalten.
  • Der Test ist ein Datenblock mit 45 Zeilen und 5 Spalten.

Beispiel 3: Teilen Sie Daten mit dplyr in Trainings- und Testsätze auf

Der folgende Code zeigt, wie Sie das caTools- Paket in R verwenden, um den Iris-Datensatz in einen Trainings- und Testsatz aufzuteilen, wobei 70 % der Zeilen als Trainingssatz und die restlichen 30 % als Testsatz verwendet werden:

 library (dplyr)

#load iris dataset
data(iris)

#make this example reproducible
set. seeds (1)

#create variable ID
iris$id <- 1:nrow(iris)

#Use 70% of dataset as training set and remaining 30% as testing set 
train <- iris %>% dplyr::sample_frac( 0.7 )
test <- dplyr::anti_join(iris, train, by = ' id ')

#view dimensions of training set
sun(train)

[1] 105 6

#view dimensions of test set
dim(test)

[1] 45 6

Aus dem Ergebnis können wir sehen:

  • Der Trainingssatz ist ein Datenrahmen mit 105 Zeilen und 6 Spalten.
  • Der Test ist ein Datenblock mit 45 Zeilen und 6 Spalten.

Beachten Sie, dass diese Trainings- und Testsätze eine zusätzliche „id“-Spalte enthalten, die wir erstellt haben.

Stellen Sie sicher, dass Sie diese Spalte nicht verwenden (oder sie nicht vollständig aus den Datenrahmen entfernen), wenn Sie Ihren Algorithmus für maschinelles Lernen anpassen.

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie andere gängige Vorgänge in R ausgeführt werden:

So berechnen Sie MSE in R
So berechnen Sie RMSE in R
So berechnen Sie das angepasste R-Quadrat in R

Einen Kommentar hinzufügen

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