Jak dzielić dane w szkoleniu & #038; zestawy testowe w r (3 metody)
Często, gdy dostosowujemy algorytmy uczenia maszynowego do zbiorów danych, najpierw dzielimy zbiór danych na zbiór uczący i zbiór testowy.
Istnieją trzy popularne sposoby dzielenia danych na zbiory szkoleniowe i testowe w R:
Metoda 1: Użyj podstawy 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, ]
Metoda 2: Użyj pakietu caTools
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 )
Metoda 3: Użyj pakietu dplyr
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 ')
Poniższe przykłady pokazują, jak w praktyce zastosować każdą metodę z wbudowanym zbiorem danych iris w R.
Przykład 1: Podziel dane na zbiory uczące i testujące przy użyciu Base R
Poniższy kod pokazuje, jak użyć bazy R do podzielenia zbioru danych iris na zbiór uczący i testujący, wykorzystując 70% wierszy jako zbiór uczący, a pozostałe 30% jako zbiór testowy:
#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
Z wyniku możemy zobaczyć:
- Zbiór szkoleniowy to ramka danych składająca się ze 106 wierszy i 5 kolumn.
- Test to blok danych składający się z 44 wierszy i 5 kolumn.
Ponieważ oryginalna baza danych zawierała w sumie 150 wierszy, zbiór uczący zawiera około 106/150 = 70,6% oryginalnych wierszy.
Jeśli chcemy, możemy również wyświetlić kilka pierwszych wierszy zestawu treningowego:
#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
Przykład 2: Podział danych na zbiory uczące i testowe za pomocą narzędzia caTools
Poniższy kod pokazuje, jak użyć pakietu caTools w R do podzielenia zbioru danych iris na zbiór uczący i testujący, wykorzystując 70% wierszy jako zbiór uczący, a pozostałe 30% jako zbiór testowy:
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
Z wyniku możemy zobaczyć:
- Zbiór szkoleniowy to ramka danych składająca się ze 105 wierszy i 5 kolumn.
- Test to blok danych składający się z 45 wierszy i 5 kolumn.
Przykład 3: Podziel dane na zbiory uczące i testujące za pomocą dplyr
Poniższy kod pokazuje, jak użyć pakietu caTools w R do podzielenia zbioru danych iris na zbiór uczący i testujący, wykorzystując 70% wierszy jako zbiór uczący, a pozostałe 30% jako zbiór testowy:
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
Z wyniku możemy zobaczyć:
- Zbiór szkoleniowy to ramka danych składająca się ze 105 wierszy i 6 kolumn.
- Test to blok danych składający się z 45 wierszy i 6 kolumn.
Należy pamiętać, że te zestawy szkoleniowe i testowe zawierają dodatkową kolumnę „id”, którą utworzyliśmy.
Upewnij się, że nie używasz tej kolumny (lub całkowicie usuwasz ją z ramek danych) podczas dostosowywania algorytmu uczenia maszynowego.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w języku R:
Jak obliczyć MSE w R
Jak obliczyć RMSE w R
Jak obliczyć skorygowany R-kwadrat w R