Несколько метрик оценки в классификации с использованием пакета каретки

Я использую caret настроить MLP в 10-кратном резюме (повторяется 5 раз). Я хотел бы получить prSummary (F1, Precision, Recall), а также стандартные оценки точности и каппы в итоговом выводе.

  • С caret::defaultSummary() Я получаю желаемую Точность и Значения Каппа, однако ей не хватает F1, точности и отзыва.
  • С участием prSummary() используется функция, противоположная истинной: отсутствует каппа и точность.
  • Есть ли способ получить обе метрики одновременно? Я предоставил игрушечный пример с набором данных iris и удалил один класс, чтобы получить проблему двоичной классификации.

Q2) На заметку: желательно ли использовать seeds параметр, как я сделал, для воспроизводимости перекрестной проверки? Потому что при случайной выборке мой код, вероятно, все еще не воспроизводим, верно?

########################## 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)

0 ответов

Другие вопросы по тегам