Estoy tratando de hacer SVM de una clase en R. He estado tratando de usar el paquete kernlab e1071 / ksvm. Pero no estoy seguro si lo estoy haciendo correctamente.
¿Hay algún ejemplo de trabajo para SVM de una clase en R?
También,
- Estoy dando una gran matriz de predictores como X. Dado que se supone que es de una clase, ¿se supone que todos los datos de entrenamiento que proporcioné forman una clase 'positiva'? Si es así, ¿no tenemos que dar las etiquetas 'Y'?
- Las etiquetas predichas dadas como salida son Verdadero / Falso. Así que supongo que True es una clase 'positiva'.
Editar: Adjuntar código de muestra. Aquí probé el 60% de la clase 'TRUE' y probé en el conjunto de datos completo.
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')