我尝试通过caret(而不是准确度或Kappa的默认选项)将logLoss作为调整randomForest(其他分类器)时使用的性能度量进行整合。
第一个R脚本使用默认值执行而没有错误。但是,当使用第二个脚本时,会出现:
错误在{:任务1失败-“未使用参数(model = method)”
函数logLoss(predict(rfModel,test[,-c(1,95)],type="prob"),test[,95])
通过利用单独训练的randomForest模型来工作。
数据框架有100多列和10,000多行。除了col=95中的9级类别“target”外,所有元素都是数字。行id位于col=1中。
不幸的是,我不能正确掌握 http://topepo.github.io/caret/training.html 提供的指导,也没有通过谷歌搜索获得太多帮助。
非常感谢您的帮助。
R脚本如下:
fitControl = trainControl(method = "repeatedcv",number = 10,repeats = 10)
rfGrid = expand.grid(mtry=c(1,9))
rfFit = train(target ~ ., data = train[,-1],method = "rf",trControl = fitControl,verbose = FALSE,tuneGrid = rfGrid)
无法运行的R脚本:
logLoss = function(data,lev=NULL,method=NULL) {
lLoss = 0
epp = 10^-15
for (i in 1:nrow(data)) {
index = as.numeric(lev[i])
p = max(min(data[i,index],1-epp),epp)
lLoss = lLoss - log(p)
}
lLoss = lLoss/nrow(data)
names(lLoss) = c("logLoss")
lLoss
}
fitControl = trainControl(method = "repeatedcv",number = 10,repeats = 10,summaryFunction = logLoss)
rfGrid = expand.grid(mtry=c(1,9))
rfFit = train(target ~ ., data = trainBal[,-1],method = "rf",trControl = fitControl,verbose = FALSE,tuneGrid = rfGrid)