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')