如何向Caret总结函数传递参数?
例如,Caret的twoClassSummary函数具有以下签名:twoClassSummary(data, lev = NULL, model = NULL)
参数lev指定我感兴趣的因子水平。
现在我想告诉Caret,我对因子水平为“false”的摘要感兴趣。类似于:
trainControl(summary=twoClassSummary(lev="false"))
无法工作。我如何向总结函数传递参数?谢谢!
如何向Caret总结函数传递参数?
例如,Caret的twoClassSummary函数具有以下签名:twoClassSummary(data, lev = NULL, model = NULL)
参数lev指定我感兴趣的因子水平。
现在我想告诉Caret,我对因子水平为“false”的摘要感兴趣。类似于:
trainControl(summary=twoClassSummary(lev="false"))
我相信目前没有直接的方法来做到这一点,因为train(...)中的其他参数没有传递给twoClassSummary()。您可以使用技巧使其工作,并且您的想法非常接近。创建一个自定义函数,将caret中的值传递给摘要函数,但在执行此操作时对它们进行处理或替换。
trainControl(
summaryFunction = function(...) empTwoClassSummary(..., lev = c("your_other_class","false"))
trainControl(
summaryFunction = function(...) customTwoClassSummary(..., weights = c(0.1, 0.2), orgData = my_data)
与问题无关:在您的示例中,确保您要作为目标级别的级别是lev
中的第二个向量元素,因为twoClassSummary()默认情况下假定这些行:
lvls <- levels(data$obs)
data$y = as.numeric(data$obs == lev[2])