Ich versuche, SVM in einer Klasse in R auszuführen. Ich habe versucht, das Kernlab-Paket e1071 / ksvm zu verwenden. Aber ich bin mir nicht sicher, ob ich es richtig mache.
Gibt es ein funktionierendes Beispiel für SVM einer Klasse in R?
Ebenfalls,
- Ich gebe eine große Matrix von Prädiktoren als X. Da angenommen wird, dass es sich um eine Klasse handelt, ist die Annahme, dass alle Trainingsdaten, die ich gegeben habe, eine positive Klasse sind? Wenn ja, müssen wir die Bezeichnungen nicht mit "Y" versehen?
- Die als Ausgabe angegebenen vorhergesagten Bezeichnungen sind Wahr / Falsch. Ich gehe also davon aus, dass True eine „positive“ Klasse ist.
Bearbeiten: Beispielcode anhängen. Hier habe ich 60% der 'TRUE'-Klasse abgetastet und den vollständigen Datensatz getestet.
library(e1071)
library(caret)
data(iris)
iris$SpeciesClass[iris$Species=="versicolor"] <- "TRUE"
iris$SpeciesClass[iris$Species!="versicolor"] <- "FALSE"
trainPositive<-subset(iris,SpeciesClass=="TRUE")
inTrain<-createDataPartition(1:nrow(trainPositive),p=0.6,list=FALSE)
trainpredictors<-iris[inTrain,1:4]
testpredictors<-iris[,1:4]
testLabels<-iris[,6]
svm.model<-svm(trainpredictors,y=NULL,
type='one-classification',
nu=0.5,
scale=TRUE,
kernel="radial")
svm.pred<-predict(svm.model,testpredictors)
confusionMatrixTable<-table(Predicted=svm.pred,Reference=testLabels)
confusionMatrix(confusionMatrixTable,positive='TRUE')