Saya mencoba melakukan satu kelas SVM di R. Saya telah mencoba menggunakan paket kernlab e1071 / ksvm. Tetapi saya tidak yakin apakah saya melakukannya dengan benar.
Apakah ada contoh kerja untuk satu kelas SVM di R?
Juga,
- Saya memberikan matriks besar prediktor sebagai X. Karena itu seharusnya satu kelas, apakah asumsi bahwa semua data pelatihan yang saya berikan bentuk kelas 'positif'? Jika demikian, kita tidak harus memberikan label 'Y'?
- Label yang diprediksi diberikan sebagai keluaran adalah Benar / Salah. Jadi saya berasumsi, True adalah kelas 'positif'.
Sunting: Melampirkan kode sampel. Di sini saya mengambil sampel 60% dari kelas 'BENAR' dan saya menguji pada set data lengkap.
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')
Jawaban:
Latihan lab Bab 9 dari Pengantar Pembelajaran Statistik memberikan contoh kerja menggunakan SVM untuk klasifikasi biner, dan memang menggunakan perpustakaan e1071. Dengan izin dari penerbit, versi PDF dari buku ini tersedia untuk diunduh gratis.
sumber
Saya menyediakan versi yang diperbaiki dari kode di atas. Pilihan 'trainpredictors' Anda salah karena Anda memilih dari iris alih-alih 'trainPositive' tetapi indeks Anda dipilih dari 'trainPositive'. Akurasi: kereta = 78,125 tes = 91,53
sumber