如何将 logLoss 合并到插入符号中

Rob*_*Rob 5 r r-caret

我试图将 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)

top*_*epo 2

您的参数名称不正确(即"unused argument (model = method)")。该网页说应该调用最后一个函数参数model而不是method