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