Cara Mudah Split Dataset

By | October 23, 2021
Print Friendly, PDF & Email
4,059 Views

Split Dataset termasuk dalam tahapan pre prosesing untuk mendapatkan dataset yang proporsional. Secara umum split dataset harus memasukan sebuah porsi, misalkan disebut porsi 0.75 artinya 75% dimasukan dataset training serta sisanya dimasukan kedalam testing.

Artikel split dataset sudah saya bahas disini, namun demikian agak terlalu ribet karena banyak kode yang harus dibuat. Nah pada postingan ini, saya akan bahasa cara mudah split dataset di R menggunakan library caTools

Misalkan saya punya dataset dengan nama variabel dat berikut yang terdiri dari 2 target yaitu positif dan negatif

   no x  target
1   1 a negatif
2   2 b negatif
3   3 c negatif
4   4 d positif
5   5 e positif
6   6 f positif
7   7 g positif
8   8 h positif
9   9 i positif
10 10 j positif
11 11 k positif
12 12 l positif
13 13 m positif
14 14 n negatif
15 15 o negatif
16 16 p negatif

Perhatikan kolom target, kita akan hitung berapa sih jumlah kelas positif dan negatif pada dataset diatas. Saya buat function saja dengan nama info

library(openxlsx)
library(dplyr)
require(caTools)

info <- function (dat){
  positif = dat %>% filter(target=="positif")
  negatif = dat %>% filter(target=="negatif")
  
  kelas = c("positif","negatif")
  jumlah = c(length(positif$target),length(negatif$target))
  informasi = data.frame(kelas,jumlah)
  return (informasi)
  
}

Sekarang kita panggil dengan perintah berikut

print(info(dat))

hasilnya yaitu

    kelas jumlah
1 positif     10
2 negatif      6

Atau kalian bisa juga menggunakan teknik count dari dplyr

dat %>% count(target)

Hasilnya

   target  n
1 negatif  6
2 positif 10

Kalian bisa lihat bahwa dataset diatas berjumlah 16 record yang tersebar target yaitu 10 positif dan 6 negatif.

Penentuan Porsi Split

Tentu kalau saya pilih porsi split 0.75, maka artinya

  • train: 12 record yang terdiri dari 8 positif dan 4 negatif
  • test : 4 record yang terdiri dari 2 positif dan 2 negatif

Cara mudah hitung nya adalah, misalkan dari 10 positif, maka 0.75*10 = 7.5 pembulatan menjadi 8 dimasukan sebagai data train, sisanya yaitu 2 dimasukan kedalam test

See also  Perbandingan Clustering KMeans dengan DBSCAN

Begitu juga dengan 6 negatif, maka 0.75*6 = 4.5 pembulatan ke bawah menjadi 4 dimasukan sebagai data train, sisanya yaitu 2 dimasukan kedalam test.

Cara Mudah Split Dataset

Sekarang kita pakai library saja dengan perintah berikut

set.seed(101) #biar tidak random, tentukan seed randomnya
sample = sample.split(dat$target, SplitRatio = .75)

Lanjutnya panggil perintah subset

train = subset(dat, sample == TRUE)
test  = subset(dat, sample == FALSE)

Kalian bisa lihat komposisi train berikut

> train
   no x  target
1   1 a negatif
2   2 b negatif
4   4 d positif
5   5 e positif
6   6 f positif
7   7 g positif
9   9 i positif
10 10 j positif
12 12 l positif
13 13 m positif
15 15 o negatif
16 16 p negatif

Terdiri dari

    kelas jumlah
1 positif      8
2 negatif      4

Sedangkan untuk test

> test
   no x  target
3   3 c negatif
8   8 h positif
11 11 k positif
14 14 n negatif

Terdiri dari

    kelas jumlah
1 positif      2
2 negatif      2

Bagaimana menurut kalian? Sangat mudah bukan!

Library Caret

Kalau lebih mudah, bisa menggunakan library caret, langsung saja, misalkan kita punya dataset df dengan kolom kelas yang bertipe kategorikal

set.seed(1)
trainIndex = caret::createDataPartition(df$kelas, p = 0.7,
                                  list = FALSE,
                                  times = 1)


dfTrain <- df[ trainIndex,]
dfTest  <- df[-trainIndex,]

 

Ratio diatas menggunakan 0.7 atau 70% sebagai dataset latih