从多个混淆矩阵中提取指标并填充数据框

我有多个不同分类模型的混淆矩阵输出。我希望从每个混淆矩阵中提取模型指标(例如,敏感性 –> 平衡准确率,或者来自cf_1$byClass的所有指标),并填充到一个数据框中。我希望数据框包含所有这些指标,以及表示这些指标来自哪个混淆矩阵的标签。谁能帮我弄清楚如何做到这一点?请看下面的可重现示例:

library(caret)library(tidyverse)df_1 <- data.frame(x = sample(LETTERS[1:2], 20, replace = T),                      y = sample(LETTERS[1:2], 20, replace = T))df_2 <- data.frame(x = sample(LETTERS[1:2], 20, replace = T),                      y = sample(LETTERS[1:2], 20, replace = T))cf_1 <- confusionMatrix(df_1$y, df_1$x)cf_2 <- confusionMatrix(df_2$y, df_2$x)# 我希望有一个数据框包含这些数据,以及一个表示相关混淆矩阵名称的列cf_1$byClasscf_2$byClass

我希望的输出看起来像这样,但包含所有相关指标:

x = c(0.2, 0.4)y = c(0.5, 0.6)z = c("cf_1", "cf_2"      )output <- data.frame(Sensitivity = x, Specificity = y, Model = z)

更新

这是我想出的解决方案,虽然不漂亮,但它有效。尽管如此,我仍然欢迎看到是否有人能提出更简洁、更有效的方法来做这件事!

model_names <- c("cf_1", "cf_2")model_metrics <- list()for (i in 1:length(model_names)) {     for (j in model_names) {          model <- eval(as.name(j))          results <- model$byClass %>% round(digits = 3)          results <- c(model = j, results)          model_metrics[[j]] <- results     }}model_metrics <- do.call(rbind, model_metrics) %>%      data.frame %>%      `rownames<-`(NULL)model_metrics

回答:

两种方法(顺便说一下,我认为您的示例中有一个打字错误,df_1使用了两次)

# 基础Routput <- data.frame(rbind(cf_1$byClass, cf_2$byClass))output$model = c('cf_1', 'cf_2')# dplyr版本output <- bind_rows(cf_1$byClass, cf_2$byClass, .id = 'model')

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注