如何通过循环获得混淆矩阵值?

How can I get confusion matrix values with a loop?

我试图设置一个可以从混淆矩阵中获取特定值的循环,但这对我来说是不可能的。

这是我心中的简单想法:

knn_MaC <-  function(train,test,label,test_label,k,positive){
  z <- matrix()
  for (i in k){
  Yp <- knn(train = train, test = test, cl= label,k = i)
  MaC <-  confusionMatrix(Yp,test_label,positive)
  z <- c(MaC$table[2],MaC$table[3])
  }}

正如我所说,我尝试了很多方法来获取各种错误。我的想法是获取这些值来制作简历 table.

在下面的代码中,我制作了一些示例数据,并编写了一个适合我的函数:

library(class)
library(caret)
library(data.table)

train <- rbind(iris3[1:25,,2], iris3[1:25,,3])
test <- rbind(iris3[26:50,,2], iris3[26:50,,3])
cl <- factor(c(rep("c",25), rep("s",25)))
test_label <- factor(c(rep("c",25), rep("s",25)))
k <- c(3,5,7,11)
positive <- NULL

knn_MaC <-  function(train,test,label,test_label,k,positive){
  z <- list()
  for (i in k){
    Yp <- knn(train = train, test = test, cl= label,k = i)
    MaC <-  confusionMatrix(Yp,test_label,positive)
    z[[i]] <- data.frame(k=i,
                       False_negative=MaC$table[2],
                       False_positive=MaC$table[3])
  }
  return(rbindlist(z))
}

final_results <- knn_MaC(train,test,label,test_label,k,positive)

如果这对您不起作用,您可能需要提供一个数据示例。另外,请确保在测试之前已完全清除环境。