Оптимальный порог для функции ожидаемого значения со случайным лесом и для цикла - PullRequest
0 голосов
/ 19 апреля 2020

Привет, поэтому я пытаюсь создать функцию, которая возвращает пороговое значение с наибольшим ожидаемым значением в течение l oop, однако я продолжаю получать некоторые ошибки. Существует два основных:

  • длиннее объекта не кратно короткому объекту lengthError в таблице (Predicted = Predforest.2, Observed = df.test.scaled.2 $ популярность): все аргументы должна иметь одинаковую длину
  • Ошибка в [.default (conf.m, 2, 2): индекс за пределами этой ошибки Эта ошибка появляется, когда я устанавливаю пороговое значение чрезвычайно высокое / низкое, что приводит к отображению только матрицы положительные или отрицательные значения, что приводит к тому, что функция ожидаемого значения не может рассчитать прибыль. Есть ли простой способ решить эту проблему?

Теперь я не знаю, как решить эту проблему. Есть ли кто-нибудь, кто знает, как решить эти ошибки?

mdlB <- popularity ~.

tp.rev <- 1300000 - 500000
fp.rev <- 0-500000
tn.rev <- 0
fn.rev <- 0
Expected.value <- NULL

optimal.revenue <- function(x){
m <- round(sqrt( (length(all.vars(mdlA)) - 1)) )
rsltForest.2 <- 
randomForest(mdlB, data=df.train.scaled.2,
             ntree = 100, mtry = m,
             importance = TRUE)
Predforest.2 <- predict(rsltForest.2, df.test.scaled.2, type = "prob")[,2]
Predforest.2  <- as.numeric(Predforest.2 > x)
confusion.matrix <- table(Predicted = Predforest.2, Observed = df.test.scaled.2$popularity)
Expected.value <- tp.rev*confusion.matrix[2,2] + fp.rev*confusion.matrix[2,1] +     tn.rev*confusion.matrix[1,1] + fn.rev*confusion.matrix[1,2]
return(confusion.matrix)

}

for (i in 0.1:1) {
  confusion.matrix[i] <- optimal.revenue(x)

}

...