Ниже приведен отрывок из кода, который я пытаюсь использовать для немецкого набора кредитных данных.
Я пытаюсь создать общую функцию для ансамблевых методов для моей блестящей панели инструментов.
Проблема с гбм. Сеанс R завершится аварийно, если переменная ответа не преобразована в коэффициент.
Если переменная ответа преобразована в коэффициент, то RandomForest не будет создавать матрицу частоты ошибок OOB и путаницы в своем выходном компоненте.
Пожалуйста, порекомендуйте.
Переменная ответа - "по умолчанию". Перед нанесением модели переменная ответа обрабатывается как,
## load the dataset
data_x = read.csv("credit.csv")
## Preprocessing the dataset
data_x$default <- ifelse(data_x$default == "yes", 1, 0)
##Loading packages
pacman::p_load(shiny,shinydashboard,gbm,
randomForest,ggplot2,ipred,caret,ROCR,dplyr,ModelMetrics)
user defined function
model = function(algo =gbm ,distribution = 'bernoulli',
type = 'response', set ='AUC',n.trees =10000){
## Fit the model
model<- algo(formula = default ~ .,
distribution = distribution,
data = train,
n.trees = n.trees,
cv.fold= 3)
## Generate the prediction on the test set
pred<- predict(object = model,
newdata = test,
n.trees = n.trees,
type = type)
## Generate the test set AUCs using the pred
AUC<- auc(actual = test$default, predicted = pred)
if (set == 'AUC'){
return(AUC)
}
if (set == 'predictions'){
return(pred)
}
if (set == 'model'){
return(model)
}
else
return(NULL)
}
now call different model
List of different models
get_model<- function(algo,type = 'response', ntrees = 10000){
z= model(algo = algo, type= type, set = 'model')
}
Bag_model<- get_model(algo = bagging, type='prob')
RF_model<- get_model(algo = randomForest)
GBM_model<- get_model(algo = gbm)
Если я передам алгоритм в виде строки, функция не запустится. Ошибки нет, R просто указывает, что произошла фатальная ошибка. Перезапуск сеанса.
Вы не привели пример. Я пробовал с mtcars
, но набор данных слишком мал для работы.
Сейчас я поделюсь набором данных и полным кодом по ссылке на github.
Но большое спасибо за терпение и советы. Очень признателен!!
Вот данные,
Это ссылка на полный код,
Приведите воспроизводимый пример. Кроме того, вам может понадобиться
get(algo)(formula = ..
и передать алгоритм в виде строки, напримерget_model(algo = "randomForest")
.