如何将参数传递给caret摘要函数

4

如何向Caret总结函数传递参数?

例如,Caret的twoClassSummary函数具有以下签名:twoClassSummary(data, lev = NULL, model = NULL)

参数lev指定我感兴趣的因子水平。

现在我想告诉Caret,我对因子水平为“false”的摘要感兴趣。类似于:

  trainControl(summary=twoClassSummary(lev="false")) 

无法工作。我如何向总结函数传递参数?谢谢!

请在描述问题时尽量具体。为什么它不能工作?有什么错误信息?你尝试过什么来解决这个问题? - Johannes
请参见:https://dev59.com/qaPia4cB1Zd3GeqP3snf - Brian D
1个回答

5

我相信目前没有直接的方法来做到这一点,因为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])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接