我想在 caret
中定义我的自定义度量函数,但在此函数中我想使用不用于训练的其他信息 . 因此,我需要在此折叠中使用的数据的索引(行号)进行验证 .
这是一个愚蠢的例子:
生成数据:
library(caret)
set.seed(1234)
x <- matrix(rnorm(10),nrow=5,ncol=2 )
y <- factor(c("y","n","y","y","n"))
priors <- c(1,3,2,7,9)
这是我的示例度量函数,它应该使用来自 priors
向量的信息
my.metric <- function (data,
lev = NULL,
model = NULL) {
out <- priors[-->INDICES.OF.DATA<--] + data$pred/data$obs
names(out) <- "MYMEASURE"
out
}
myControl <- trainControl(summaryFunction = my.metricm, method="repeatedcv", number=10, repeats=2)
fit <- train(y=y,x=x, metric = "MYMEASURE",method="gbm", trControl = mControl)
为了使这个可能更加清晰,我可以在生存环境中使用它,其中 priors
是天,并在 Surv
对象中使用它来测量度量函数中的生存AUC .
我怎么能在插入符号中这样做?
1 回答
您可以使用
data$rowIndex
访问行号 . 请注意,摘要函数应返回单个数字作为其度量(例如ROC,Accuracy,RMSE ...) . 上述函数似乎返回一个长度等于保持的CV数据中的观察数的向量 .如果您有兴趣查看重新采样及其预测,可以将
print(data)
添加到my.metric
函数中 .下面是使用您的数据(放大一点)和
Metrics::auc
作为预测类概率乘以前的概率之后的性能指标的示例:我不太了解生存分析,但我希望这会有所帮助 .