2015-08-15 2 views
1

Я пытаюсь понять немного больше о пакете caret и столкнулся с блокпостом, который я не уверен, как его решить.Ошибка: попытка применить нерабочие при использовании пакета Caret

#loading up libraries 
library(MASS) 
library(caret) 
library(randomForest) 
data(survey) 
data<-survey 

#create training and test set 
split <- createDataPartition(data$W.Hnd, p=.8)[[1]] 
train<-data[split,] 
test<-data[-split,] 


#creating training parameters 
control <- trainControl(method = "cv", 
         number = 10, 
         p =.8, 
         savePredictions = TRUE, 
         classProbs = TRUE, 
         summaryFunction = "twoClassSummary") 

#fitting and tuning model 
tuningGrid <- data.frame(.mtry = floor(seq(1 , ncol(train) , length = 6))) 
rf_tune <- train(W.Hnd ~ . , 
      data=train, 
      method = "rf" , 
      metric = "ROC", 
      trControl = control) 

получаю сообщение об ошибке:

Error in evalSummaryFunction(y, wts = weights, ctrl = trControl, lev = classLevels, : 
    attempt to apply non-function 

Я подтвердил, что мой DV (W.Hnd) является уровень фактора, поэтому случайный лес было бы целесообразно использовать для классификации. Мое предположение заключается в том, что caret не знает, чтобы применить к алгоритму randomForest? Помимо этого я понятия не имею.

ответ

5

У вас есть цитаты вокруг «twoClassSummary», что делает этот символ символом. R пытается применить это как функцию, вызывающую ошибку.

Удалите кавычки и повторите попытку. Это должно позволить правильно вызвать функцию twoClassSummary.

#creating training parameters 
control <- trainControl(method = "cv", 
         number = 10, 
         p =.8, 
         savePredictions = TRUE, 
         classProbs = TRUE, 
         summaryFunction = twoClassSummary) 
Смежные вопросы