我试图将 logLoss 合并为通过插入符号(而不是默认选项 Accuracy 或 Kappa)调整 randomForest(其他分类器)时使用的性能度量。
第一个 R 脚本使用默认值执行,不会出现错误。但是,我得到:
{ 中的错误:任务 1 失败 - “未使用的参数(模型 = 方法)”
使用第二个脚本时。
该函数logLoss(predict(rfModel,test[,-c(1,95)],type="prob"),test[,95])通过利用单独训练的随机森林模型来工作。
该数据框有 100 多列和 10,000 多行。所有元素都是在 col=95 的 9 级分类“目标”之外的数字。行 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)
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
}
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)
Run Code Online (Sandbox Code Playgroud)