Как создать кривую точного возврата из модели случайного леса? - PullRequest
1 голос
/ 20 апреля 2020

Я пытаюсь создать точную кривую отзыва из модели случайного леса, основанную только на данных обучения. Это похоже на этот вопрос , но я не знаю код для создания кривой PR. Смотрите мой воспроизводимый пример ниже (который изменен, чтобы соответствовать моему личному набору данных):

#Load beaver2
View(beaver2)

#convert outcome into factor
beaver2 <- beaver2 %>% mutate(activ = ifelse(activ==0, "no","yes"))

#convert outcome to factor
beaver2$activ <- as.factor(beaver2$activ)

#create trControl
data_ctrl_null <- trainControl(method="cv", number = 5, classProbs = TRUE, summaryFunction=twoClassSummary, savePredictions=T, sampling=NULL)

#create rf model
rf_model <- train(activ ~ ., data=beaver2, trControl = data_ctrl_null, method= "rf", preProc=c("center","scale"),metric="ROC", importance=TRUE)

#create precision recall curve
library("PRROC")

Я хочу использовать пакет PRROC. Как мне получить прогнозы из модели случайного леса и создать кривую PR? Запись; Я хочу создать прогнозы на основе моих тренировочных данных; так что представьте себе, что нет данных тестирования для прогнозов. Благодарим за помощь!

1 Ответ

1 голос
/ 20 апреля 2020
#Load beaver2
View(beaver2)
library(dplyr)
library(caret)

#convert outcome into factor
beaver2 <- beaver2 %>% mutate(activ = ifelse(activ==0, "no","yes"))

#convert outcome to factor
beaver2$activ <- as.factor(beaver2$activ)

#create trControl
data_ctrl_null <- trainControl(method="cv", number = 5, classProbs = TRUE, summaryFunction=twoClassSummary, savePredictions=T, sampling=NULL)

#create rf model
rf_model <- train(activ ~ ., data=beaver2, trControl = data_ctrl_null, method= "rf", preProc=c("center","scale"),metric="ROC", importance=TRUE)

# predict using train data
predictions <- predict.train(rf_model)
test_data <- beaver2 %>% select(-activ) #instead of train data, use unseen test data here.
predictions <- predict(object = rf_model, newdata = test_data)
#add some artificial wrong predictions, otherwise perfect prediction, since we use train data as test
predictions[1] <- 'yes'
predictions[18] <- 'yes'
predictions[60] <- 'no'
predictions[61] <- 'no'
predictions[100] <- 'no'
confusion_Matrix <- table(Predictions = predictions, Reference = beaver2$activ)

#create precision recall curve
library("PRROC")

fg <- predictions[beaver2$activ == 'yes']
bg <- predictions[beaver2$activ == 'no']

pr <- pr.curve(scores.class0 = fg, scores.class1 = bg, curve = T)
plot(pr)

Смотрите также ответ здесь: https://stats.stackexchange.com/questions/10501/calculating-aupr-in-r

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...