使用 svm 编写一个函数来查找混淆矩阵以进行分类

Writing a function that finds the confusion matrix using a svm for classification

我正在尝试编写一个程序,其中将 y(输出)变量的数据和占位符提供给函数。该函数为数据集和测试数据生成混淆矩阵。这实际上是我对此类功能的第 5 次尝试——这就是为什么大部分功能来自使用 iris 数据作为数据集的手册——但我似乎卡在了该功能的 y.vec 输入上.我将 y 变量插入函数的方法是否正确?

这是我的函数。

function(data,y.vec)

{       
    library(e1071)
    library(rpart)
    data=data
  
    index <- 1:nrow(data)
    testindex <- sample(index, trunc(length(index)/3))
    testset <- data[testindex,]
    trainset <- data[-testindex,]
    
    svm.model <- svm(as.factor(data[y.vec]) ~ ., data = trainset, cost = 100, gamma = 1)
    svm.pred <- predict(svm.model, testset[,-y.vec])
    
    table(pred = svm.pred, true = testset[,y.vec])    
}
myFunc <- function(df, y.vec)
  {
    library(e1071) 
  
    df[,y.vec] <- as.factor(df[,y.vec])
    
    set.seed(1)
    index <- 1:nrow(df)
    testindex <- sample(index, trunc(length(index)/3))
    testset <- df[testindex,]
    trainset <- df[-testindex,]
    
    svm.model <- svm(as.formula(paste(y.vec, "~ .")), data = trainset, cost = 100, gamma = 1)
    svm.pred <- predict(svm.model, testset[,!(names(testset) %in% y.vec)])
    
    return(table(pred = svm.pred, true = testset[,y.vec]))
  }

myFunc(iris, "Species")