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')
Respuestas:
El ejercicio de laboratorio del Capítulo 9 de Una Introducción al Aprendizaje Estadístico proporciona un ejemplo práctico del uso de un SVM para la clasificación binaria, y de hecho usa la biblioteca e1071. Con permiso del editor, una versión en PDF del libro está disponible para descarga gratuita.
fuente
Estoy proporcionando una versión rectificada del código anterior. La selección de 'trainpredictors' es incorrecta porque seleccionaste de iris en lugar de 'trainPositive' pero indicaste seleccionaste de 'trainPositive'. Precisión: tren = 78.125 prueba = 91.53
fuente