Estou tentando fazer o SVM de uma classe em R. Eu tenho tentado usar o pacote e1071 / ksvm kernlab. Mas não tenho certeza se estou fazendo isso corretamente.
Existe algum exemplo de trabalho para SVM de uma classe em R?
Além disso,
- Estou dando uma grande matriz de preditores como X. Como é suposto ser de uma classe, é a suposição de que todos os dados de treinamento que dei aos formulários classificam a classe 'positiva'? Nesse caso, não precisamos dar os rótulos 'Y'?
- Os rótulos previstos fornecidos como saída são Verdadeiro / Falso. Portanto, estou assumindo que True é uma classe 'positiva'.
Editar: anexando código de exemplo. Aqui, amostramos 60% da classe 'TRUE' e testei no conjunto de dados 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')
Respostas:
O exercício de laboratório do Capítulo 9 de Uma introdução ao aprendizado estatístico fornece um exemplo prático de uso de um SVM para classificação binária e, de fato, usa a biblioteca e1071. Com permissão do editor, uma versão em PDF do livro está disponível para download gratuito.
fonte
Estou fornecendo a versão retificada do código acima. Sua seleção de 'trainpredictors' está errada porque você selecionou a partir da íris em vez de 'trainPositive', mas o índice selecionou a partir de 'trainPositive'. Precisão: trem = 78,125 teste = 91,53
fonte