编写一个函数,使用 svm 找到混淆矩阵进行分类

Posted

技术标签:

【中文标题】编写一个函数,使用 svm 找到混淆矩阵进行分类【英文标题】:Writing a function that finds the confusion matrix using a svm for classification 【发布时间】:2018-02-20 02:35:52 【问题描述】:

我正在尝试编写一个程序,其中将 y(输出)变量的数据和占位符提供给函数。该函数为数据集和测试数据生成混淆矩阵。这实际上是我对这种函数的第五次尝试——这就是为什么这个函数的大部分来自使用虹膜数据作为数据集的手册——但我似乎卡在函数的 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])    

【问题讨论】:

【参考方案1】:
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")

【讨论】:

以上是关于编写一个函数,使用 svm 找到混淆矩阵进行分类的主要内容,如果未能解决你的问题,请参考以下文章

R语言使用kernlab包中的ksvm函数构建支持向量机SVM模型(Support vector machines)使用RBF核函数使用table函数计算混淆矩阵评估分类模型性能

无法理解 SVM 返回的混淆矩阵

如何使用 LIBSVM 从混淆矩阵中获得分类精度?

如何提高 SVM 的性能?

R语言编写自定义函数计算分类模型评估指标:准确度特异度敏感度PPVNPV数据数据为模型预测后的混淆矩阵比较多个分类模型分类性能(逻辑回归决策树随机森林支持向量机)

如何生成混淆矩阵并找到朴素贝叶斯分类器的错误分类率?