支持向量机在r

时间:2016-05-27 11:28:22

标签: r svm

我一直在使用R Studio开发支持向量机算法。但是,我最终的准确率很低,而且我不知道如何修复它。我期待准确率高于90%。

这是我的代码:

install.packages("caTools")
install.packages("class")
library(caTools)
library(class)
install.packages("ISLR")
library(ISLR)

Collegedata<-College[,-1]
Collegedata[,-17]<-scale(Collegedata[,-17])



med<-median(Collegedata$Grad.Rate)
Grad.Rate<-Collegedata$Grad.Rate>=med
Grad.Rate1<-as.numeric(Grad.Rate)
Collegedata<-data.frame(Collegedata,Grad.Rate1)
corcollege<-cor(Collegedata)
Collegedata<-Collegedata[,-2:-3]
Collegedata<-Collegedata[,-4]
Collegedata<-Collegedata[,-7]
Collegedata<-Collegedata[,-13]

SVM
install.packages("e1071")
library("e1071")
collegesplit=sample.split(Collegedata, SplitRatio=0.8)
collegetrain<-subset(Collegedata, collegesplit==1)
collegetest<-subset(Collegedata, collegesplit==0)
collegetrain<-data.frame(collegetrain)

svm.model.college <- svm(Grad.Rate1 ~ ., data = collegetrain, type = "C-classification", cost = 1,gamma = 0.125, cross =10)
svm.pred.college <- predict(svm.model.college, collegetest[,-13])
table(pred = svm.pred.college, true = collegetest[,13])
install.packages('ROCR')
     library(ROCR)
     ROC=predict(svm.model.college,newdata=collegetest)
     ROC<-as.vector(ROC)
     ROC<-as.numeric(ROC)
     pred=prediction(ROC,collegetest$Grad.Rate1)
     perf=performance(pred,'tpr','fpr')
     plot(perf)
     as.numeric(performance(pred,'auc')@y.values)

1 个答案:

答案 0 :(得分:0)

自从我编写SVM以来已经有一段时间了,所以我无法为您提供任何代码,但是,我可以说SVM对您选择的超参数非常敏感,例如:成本和伽玛。您希望对某些值序列执行网格搜索以确定最佳值。我建议使用e1071包中的tune.svm()或best.tune()函数来执行此操作。此外,虽然默认的高斯内核通常是最佳内核,但不能保证它是最好的,所以你可以尝试使用线性内核。

您可能会发现this paper对于帮助开发构建模型的框架非常有用。