caret如何计算F1分数?

问题描述 投票:0回答:0

我正在使用插入符号来计算多个 ML 模型并进行比较。然而,我看到模型计算出的 F1-score 似乎并不是我所期望的。

F1-score 的公式应该是这个:2 x [(Precision x Recall) / (Precision + Recall)].

但是,当我运行 caret 时,计算出的 F1 分数似乎不是那样工作的。

我运行的代码如下:

  control <- trainControl(method="repeatedcv", number=k_folds_cross_validation, repeats=times_cross_validation, search = "random",
                          summaryFunction = multiClassSummary, returnResamp = "all", savePredictions = "all", classProbs =  TRUE)
  set.seed(7)
  tuneGrid = expand.grid(alpha = 0, lambda = 10^seq(-4, 0, length.out = 50))
  lasso_ML <- train(t(x), y, method = "glmnet", trControl = control, family="binomial", tuneGrid = tuneGrid , metric="F1")

并且在运行时

lasso_ML$results
我看到一个表格如下(我没有放所有列)

  alpha       lambda    F1 Precision     Recall
1     0 0.0001000000 0.625      0.55 0.05833333
2     0 0.0001206793 0.625      0.55 0.05833333
3     0 0.0001456348 0.625      0.55 0.05833333
4     0 0.0001757511 0.625      0.55 0.05833333
5     0 0.0002120951 0.625      0.55 0.05833333
6     0 0.0002559548 0.625      0.55 0.05833333

怎么可能?理论上 F1 分数应该是 0.1054794,而不是 0.625。

r machine-learning r-caret
© www.soinside.com 2019 - 2024. All rights reserved.