Eğitimde veriler nasıl bölünür & #038; r'deki test setleri (3 yöntem)
Genellikle makine öğrenimi algoritmalarını veri kümelerine uyarladığımızda, öncelikle veri kümesini bir eğitim seti ve bir test seti olarak ikiye ayırırız.
R’de verileri eğitim ve test kümelerine bölmenin üç yaygın yolu vardır:
Yöntem 1: Base R’yi kullanın
#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, ]
Yöntem 2: caTools paketini kullanma
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 )
Yöntem 3: dplyr paketini kullanma
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 ')
Aşağıdaki örnekler, R’deki yerleşik iris veri kümesiyle her yöntemin pratikte nasıl kullanılacağını gösterir.
Örnek 1: Base R’yi kullanarak verileri eğitim ve test setlerine ayırın
Aşağıdaki kod, satırların %70’ini eğitim seti ve geri kalan %30’unu test seti olarak kullanarak iris veri setini bir eğitim ve test setine bölmek için R tabanının nasıl kullanılacağını gösterir:
#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
Sonuçtan şunu görebiliriz:
- Eğitim seti 106 satır ve 5 sütundan oluşan bir veri çerçevesidir.
- Test 44 satır ve 5 sütundan oluşan bir veri bloğudur.
Orijinal veritabanı toplamda 150 satıra sahip olduğundan eğitim seti orijinal satırların yaklaşık 106/150 = %70,6’sını içermektedir.
İstersek eğitim setinin ilk birkaç satırını da görüntüleyebiliriz:
#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
Örnek 2: caTools’u kullanarak verileri eğitim ve test setlerine ayırın
Aşağıdaki kod, satırların %70’ini eğitim seti ve geri kalan %30’unu test seti olarak kullanarak iris veri setini bir eğitim ve test setine bölmek için R’deki caTools paketinin nasıl kullanılacağını gösterir:
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
Sonuçtan şunu görebiliriz:
- Eğitim seti 105 satır ve 5 sütundan oluşan bir veri çerçevesidir.
- Test 45 satır ve 5 sütundan oluşan bir veri bloğudur.
Örnek 3: dplyr kullanarak verileri eğitim ve test kümelerine bölme
Aşağıdaki kod, satırların %70’ini eğitim seti ve geri kalan %30’unu test seti olarak kullanarak iris veri setini bir eğitim ve test setine bölmek için R’deki caTools paketinin nasıl kullanılacağını gösterir:
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
Sonuçtan şunu görebiliriz:
- Eğitim seti 105 satır ve 6 sütundan oluşan bir veri çerçevesidir.
- Test 45 satır ve 6 sütundan oluşan bir veri bloğudur.
Bu eğitim ve test setlerinin, oluşturduğumuz ek bir “id” sütunu içerdiğini unutmayın.
Makine öğrenimi algoritmanızı ayarlarken bu sütunu kullanmadığınızdan (veya veri çerçevelerinden tamamen kaldırmadığınızdan) emin olun.
Ek kaynaklar
Aşağıdaki eğitimlerde R’de diğer yaygın işlemlerin nasıl gerçekleştirileceği açıklanmaktadır:
R’de MSE nasıl hesaplanır
R’de RMSE nasıl hesaplanır
R’de düzeltilmiş R-kare nasıl hesaplanır