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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *