gpt4 book ai didi

r - 使用 F1 指标在 Caret 中训练模型

转载 作者:行者123 更新时间:2023-12-04 12:17:49 24 4
gpt4 key购买 nike

我正在尝试将随机森林模型拟合到我的数据集,并且我想根据 F1 分数选择最佳模型。我看到一个帖子 here描述必要的代码。我试图复制代码,但出现错误

"Error in { : task 1 failed - "could not find function "F1_Score"



当我运行火车功能时。 (仅供引用,我试图预测的变量(“通过”)是一个两类因素“失败”和“通过”)

请参阅下面的代码:
library(MLmetrics)
library(caret)
library(doSNOW)

f1 <- function(data, lev = NULL, model = NULL) {
f1_val <- F1_Score(y_pred = data$pred, y_true = data$obs, positive = lev[1])
c(F1 = f1_val)
}



train.control <- trainControl(method = "repeatedcv",
number = 10,
repeats = 3,
classProbs = TRUE,
summaryFunction = f1,
search = "grid")


tune.grid <- expand.grid(.mtry = seq(from = 1, to = 10, by = 1))


cl <- makeCluster(3, type = "SOCK")
registerDoSNOW(cl)
random.forest.orig <- train(pass ~ manufacturer+meter.type+premise+size+age+avg.winter+totalizer,
data = meter.train,
method = "rf",
tuneGrid = tune.grid,
metric = "F1",
weights = model_weights,
trControl = train.control)
stopCluster(cl)

最佳答案

我不使用 MLmetrics 库重写了 f1 函数,它似乎有效。请参阅下面的工作代码以创建 f1 分数:

f1 <- function (data, lev = NULL, model = NULL) {
precision <- posPredValue(data$pred, data$obs, positive = "pass")
recall <- sensitivity(data$pred, data$obs, postive = "pass")
f1_val <- (2 * precision * recall) / (precision + recall)
names(f1_val) <- c("F1")
f1_val
}

train.control <- trainControl(method = "repeatedcv",
number = 10,
repeats = 3,
classProbs = TRUE,
#sampling = "smote",
summaryFunction = f1,
search = "grid")


tune.grid <- expand.grid(.mtry = seq(from = 1, to = 10, by = 1))


cl <- makeCluster(3, type = "SOCK")
registerDoSNOW(cl)
random.forest.orig <- train(pass ~ manufacturer+meter.type+premise+size+age+avg.winter+totalizer,
data = meter.train,
method = "rf",
tuneGrid = tune.grid,
metric = "F1",
trControl = train.control)
stopCluster(cl)

关于r - 使用 F1 指标在 Caret 中训练模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47820750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com