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
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