我正在尝试进一步了解caret
包,但在遇到一个障碍时不知道如何解决。
#loading up librarieslibrary(MASS)library(caret)library(randomForest)data(survey)data<-survey#create training and test setsplit <- createDataPartition(data$W.Hnd, p=.8)[[1]]train<-data[split,]test<-data[-split,]#creating training parameterscontrol <- trainControl(method = "cv", number = 10, p =.8, savePredictions = TRUE, classProbs = TRUE, summaryFunction = "twoClassSummary")#fitting and tuning modeltuningGrid <- 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
我已经确认我的因变量(W.Hnd)是一个因子水平,因此使用随机森林进行分类是合适的。我的假设是caret
不知道如何将randomForest
算法应用到我的数据上?除此之外我没有任何头绪。
回答:
您在”twoClassSummary”周围加了引号,这使得它成为了一个字符向量。R 试图将这个字符向量作为函数来应用,这就是导致错误的原因。
去掉引号,然后再次尝试运行您的脚本。这应该可以正确调用twoClassSummary
函数。
#creating training parameterscontrol <- trainControl(method = "cv", number = 10, p =.8, savePredictions = TRUE, classProbs = TRUE, summaryFunction = twoClassSummary)