In K-fold cross-validation, the aim is to generate K training/validation set pair, where training and validation sets on fold i do no overlap. First, we divide the dataset X into K parts as X1; X2; ... ; XK. Then for each fold i, we use Xi as the validation set and the remaining as the training set.
Possible values of K are 10 or 30. One extreme case of K-fold cross-validation is leave-one-out, where K = N and each validation set has only one instance. If we have more computation power, we can have multiple runs of K-fold cross-validation, such as 10 x 10 cross-validation or 5 x 2 cross-validation.
If we have very small datasets, we do not insist on the non-overlap of training and validation sets. In bootstrapping, we generate K multiple training sets, where each training set contains N examples (like the original dataset). To get N examples, we draw examples with replacement. For the validation set, we use the original dataset. The drawback of bootstrapping is that the bootstrap samples overlap more than the cross-validation sample, hence they are more dependent.
You can also see Java, Python, Cython, C++, C, Swift, or C# repository.
To check if you have a compatible version of Node.js installed, use the following command:
node -v
You can find the latest version of Node.js here.
Install the latest version of Git.
npm install nlptoolkit-sampling
In order to work on code, create a fork from GitHub page. Use Git for cloning the code to your local or below line for Ubuntu:
git clone <your-fork-git-link>
A directory called util will be created. Or you can use below link for exploring the code:
git clone https://github.com/starlangsoftware/sampling-js.git
Steps for opening the cloned project:
- Start IDE
- Select File | Open from main menu
- Choose
Sampling-Js
file - Select open as project option
- Couple of seconds, dependencies will be downloaded.
k. eğitim kümesini elde etmek için
getTrainFold(k: number): Array<T>
k. test kümesini elde etmek için
getTestFold(k: number): Array<T>
Bootstrap için BootStrap sınıfı
Bootstrap(instanceList: Array<T>, seed: number)
Örneğin elimizdeki veriler a adlı ArrayList'te olsun. Bu veriler üstünden bir bootstrap örneklemi tanımlamak için (5 burada rasgelelik getiren seed'i göstermektedir. 5 değiştirilerek farklı samplelar elde edilebilir)
bootstrap = Bootstrap(a, 5)
ardından üretilen sample'ı çekmek için ise
sample = bootstrap.getSample()
yazılır.
K kat çapraz geçerleme için KFoldCrossValidation sınıfı
KFoldCrossValidation(instanceList: Array<T>, K: number, seed: number)
Örneğin elimizdeki veriler a adlı ArrayList'te olsun. Bu veriler üstünden 10 kat çapraz geçerleme yapmak için (2 burada rasgelelik getiren seed'i göstermektedir. 2 değiştirilerek farklı samplelar elde edilebilir)
kfold = KFoldCrossValidation(a, 10, 2)
ardından yukarıda belirtilen getTrainFold ve getTestFold metodları ile sırasıyla i. eğitim ve test kümeleri elde edilebilir.
Stratified K kat çapraz geçerleme için StratifiedKFoldCrossValidation sınıfı
StratifiedKFoldCrossValidation(instanceLists: Array<Array<T>>, K: number, seed: number)
Örneğin elimizdeki veriler a adlı ArrayList of listte olsun. Stratified bir çapraz geçerlemede sınıflara ait veriler o sınıfın oranında temsil edildikleri için her bir sınıfa ait verilerin ayrı ayrı ArrayList'te olmaları gerekmektedir. Bu veriler üstünden 30 kat çapraz geçerleme yapmak için (4 burada rasgelelik getiren seed'i göstermektedir. 4 değiştirilerek farklı samplelar elde edilebilir)
stratified = StratifiedKFoldCrossValidation(a, 30, 4)
ardından yukarıda belirtilen getTrainFold ve getTestFold metodları ile sırasıyla i. eğitim ve test kümeleri elde edilebilir.