J'essaie de faire du SVM à une classe dans R. J'ai essayé d'utiliser le package kernlab e1071 / ksvm. Mais je ne sais pas si je le fais correctement.
Existe-t-il un exemple de travail pour SVM à une classe dans R?
Aussi,
- Je donne une grande matrice de prédicteurs sous forme de X. Puisqu'il est censé être à une seule classe, l'hypothèse selon laquelle toutes les données de formation que j'ai données sont de classe «positive»? Si oui, nous ne devons pas donner les étiquettes «Y»?
- Les étiquettes prévues fournies en sortie sont True / False. Je suppose donc que True est une classe «positive».
Modifier: joindre un exemple de code. Ici, j'ai échantillonné 60% de la classe «VRAI» et j'ai testé sur l'ensemble des données.
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')
Réponses:
L'exercice de laboratoire du chapitre 9 intitulé An Introduction to Statistical Learning fournit un exemple pratique d'utilisation d'un SVM pour la classification binaire, et il utilise en effet la bibliothèque e1071. Avec l'autorisation de l'éditeur, une version PDF du livre est disponible en téléchargement gratuit.
la source
Je fournis une version rectifiée du code ci-dessus. Votre sélection «trainpredictors» est erronée car vous avez sélectionné parmi iris au lieu de «trainPositive» mais l'index u sélectionné dans «trainPositive». Précision: train = 78,125 test = 91,53
la source