Предположим, у меня есть мультиклассовый набор данных (радужная оболочка, например). Я хочу выполнить стратифицированное 10-кратное резюме, чтобы проверить производительность модели. Я нашел функцию в пакете splitstackchange
, которая называется stratified
, которая дает мне стратифицированную складку в зависимости от пропорции данных, которые я хочу. Так что, если мне нужен тестовый фолд, это будет 0,1 из строк данных.
#One Fold
library(splitstackchange)
stratified(iris,c("Species"),0.1)
Я хочу знать, как реализовать эту функцию или любую другую форму стратифицированного резюме в 10-кратном l oop , Я не мог взломать логику c за ней. Здесь я приведу воспроизводимый пример.
library(splitstackshape)
data=iris
names(data)[ncol(data)]=c("Y")
nFolds=10
for (i in 1:nFolds){
testing=stratified(data,c("Y"),0.1,keep.rownames=TRUE)
rn=testing$rn
testing=testing[,-"rn"]
row.names(testing)=rn
trainingRows=setdiff(1:nrow(data),as.numeric(row.names(testing)))
training=data[trainingRows,]
names(training)[ncol(training)]="Y"
}