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')
Antworten:
Die Laborübung in Kapitel 9 von Eine Einführung in das statistische Lernen bietet ein Arbeitsbeispiel für die Verwendung eines SVM für die binäre Klassifizierung und verwendet tatsächlich die e1071-Bibliothek. Mit Genehmigung des Herausgebers steht eine PDF-Version des Buches zum kostenlosen Download zur Verfügung.
quelle
Ich stelle eine korrigierte Version des obigen Codes zur Verfügung. Ihre Auswahl der 'Zugprädiktoren' ist falsch, weil Sie aus der Iris anstelle von 'trainPositive' ausgewählt haben, aber den Index aus 'trainPositive' ausgewählt haben. Genauigkeit: Zug = 78,125 Test = 91,53
quelle