Я пытаюсь выполнить индивидуальный расчет по децилям, чтобы получить среднее значение по децилям на кратность при 10-кратной перекрестной проверке. Данные обучения, которые у меня есть, содержат примерно 10 000 строк, поэтому я ожидаю 1000 строк на одну свертку и, следовательно, ожидаю 100 на дециль в свертке, когда все будет хорошо. Однако в настоящее время я застрял, поскольку по какой-то причине часть данных в summaryFunction возвращает только 10 значений, когда я пытаюсь разделить на децили. Как я могу это исправить?
summaryFunction
выглядит следующим образом:
caret_fun <- function(data, lev = NULL, model = NULL){
data_f <- cbind(data$pred, data$obs)
print(data$pred)
stop("stop here bc it shows only 10 values")
data_folds <- createFolds(data_f, k = 10,
list = TRUE, returnTrain = FALSE)
print(dim(data_f))
tes <- vector()
for(i in 1:10){
print(data_f)
print(data_folds)
data_f_f <- data_f[data_folds[[i]],]
data_f_f <- data_f_f[order(data_f[,2], decreasing = TRUE),]
len <- dim(data_f_f)[1]
dataobs <- data_f_f[,2]/sum(data_f_f[,2])
dataprd <- data_f_f[,1]/sum(data_f_f[,1])
anz <- rep(1/len, len)
te_v <- (cumsum(dataprd) - cumsum(anz))/(cumsum(dataobs) - cumsum(anz))
tes[i] <- mean(te_v, na.rm = TRUE)
}
mean(tes, na.rm = TRUE)
c(custom = mean(tes, na.rm = TRUE)
}
И вывод (с предполагаемой ошибкой) выглядит следующим образом:
[1] 1092.0000 595.6364 52.0000 411.2727 530.4000 52.0000 335.6364
[8] 52.0000 572.0000 428.0000
Error in ctrl$summaryFunction(testOutput, lev, method) : stop here bc it shows only 10 values