错误:使用插入符包时尝试应用非函数

Min*_*Mai 1 r machine-learning r-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)
Run Code Online (Sandbox Code Playgroud)

不断收到错误:

Error in evalSummaryFunction(y, wts = weights, ctrl = trControl, lev = classLevels,  : 
  attempt to apply non-function
Run Code Online (Sandbox Code Playgroud)

我已经确认我的DV(W.Hnd)是一个因子级别,因此随机森林适合用于分类.我的假设是caret不知道应用于randomForest算法?除此之外,我不知道.

Whi*_*ard 5

你有"twoClassSummary"的引号,这使得它成为一个字符向量.R正试图将此作为函数应用,这会导致错误.

删除引号并再次尝试您的脚本.这应该能够twoClassSummary正确调用函数.

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