2

我正在用caret10 倍 CV 调整 MLP(重复 5 次)。我想在摘要输出中获得 prSummary(F1、Precision、Recall)以及标准准确率和 kappa 分数。

  • 有了caret::defaultSummary()我得到所需的准确度和 Kappa 值,但它缺少 F1、精确度和召回率。
  • 使用prSummary()函数则相反:缺少 Kappa 和 Accuracy。
  • 有没有办法同时获得两个指标?我提供了一个带有 iris 数据集的玩具示例,并删除了一个类以获得二元分类问题。

seedsQ2)附带说明:为了交叉验证的可重复性,是否建议像我一样使用该参数?因为使用随机抽样种子,我的代码可能仍然无法重现,对吧?

########################## Info ############################
# Toy Example - F1, Precision & Recall averaged over folds
#
########################## Preparation & Libraries ############################
#load libraries
library("dplyr")
library("ggplot2")
library("mlbench")    # for hyperparameter tuning
library("caret")      # for hyperparameter tuning
library("tictoc")     # for a performance measure

df1 <- iris %>% rename(
  Class = Species 
) %>% subset(., Class == "versicolor" | Class == "setosa")
df1$Class <- factor(df1$Class)

########################## Caret Preparation ############################
k.folds = 10
df1.seeds = c(rep(list(sample(1:10000,4,replace = T)),50),
              sample(1:10000,1,replace = T))
df1.control <- trainControl( # 10 Fold cross validation, repeated 5 times
  method="repeatedcv", 
  number=k.folds, 
  repeats=5,
  classProbs = T,
  seeds = df1.seeds,
  # summaryFunction=prSummary,
  # summaryFunction=prSummary defaultSummary twoClassSummary,
  summaryFunction=prSummary,
  #savePredictions=T
)

########################## Hyperparametertuning NeuralNet (MLP) ############################
df1.tunegrid <- expand.grid(.size=c(1:(ncol(df1)-1)))
metric <- "Accuracy"

set.seed(1337)
tic("MLP DF1, Hyperparameter Startegy 1: Grid Search")
mlp_df1 <- train(Class~., data=df1, method="mlp", metric=metric, tuneGrid=df1.tunegrid, trControl=df1.control)
toc()
print(mlp_df1)
# plot(mlp_df1)
print(mlp_df1$bestTune)
4

0 回答 0