我尝试使用 F1 分数来确定哪个 k 值可以最大化模型以达到其给定的目的。模型是通过包train中的函数制作的caret。
示例数据集: https: //www.kaggle.com/lachster/churndata
我当前的代码包括以下内容(作为 f1 分数的函数):
f1 <- function(data, lev = NULL, model = NULL) {
precision <- posPredValue(data$pred, data$obs, positive = "pass")
recall <- sensitivity(data$pred, data$obs, positive = "pass")
f1_val <- (2*precision*recall) / (precision + recall)
names(f1_val) <- c("F1")
f1_val
}
Run Code Online (Sandbox Code Playgroud)
以下为列车控制:
train.control <- trainControl(method = "repeatedcv", number = 10, repeats = 3,
summaryFunction = f1, search = "grid")
Run Code Online (Sandbox Code Playgroud)
以下是我最终执行的命令train:
x <- train(CHURN ~. ,
data = experiment, …Run Code Online (Sandbox Code Playgroud)