Credo che questo sia ciò che si vuole:
library(e1071)
data(iris)
df <- iris
df <- subset(df , Species=='setosa') #choose only one of the classes
x <- subset(df, select = -Species) #make x variables
y <- df$Species #make y variable(dependent)
model <- svm(x, y,type='one-classification') #train an one-classification model
print(model)
summary(model) #print summary
# test on the whole set
pred <- predict(model, subset(iris, select=-Species)) #create predictions
uscita:
-Sintesi:
> summary(model)
Call:
svm.default(x = x, y = y, type = "one-classification")
Parameters:
SVM-Type: one-classification
SVM-Kernel: radial
gamma: 0.25
nu: 0.5
Number of Support Vectors: 27
Number of Classes: 1
-Predictions (solo alcune delle previsioni sono mostrati qui (dove Specie = = 'setosa') per ragioni visive):
> pred
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
TRUE TRUE TRUE TRUE TRUE FALSE FALSE TRUE FALSE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE TRUE
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE
45 46 47 48 49 50
FALSE TRUE TRUE TRUE TRUE TRUE
ringrazio molto per il vostro codice molto dettagliata, ma penso che la classificazione di un classe è una cosa diversa. Nella classificazione di una classe fornisci solo gli esempi di una delle classi per addestrare l'SVM. Il modello impara a caratterizzare solo questa classe (nella fase di test puoi solo sapere se un esempio appartiene o meno a questa classe). So che devo usare l'opzione tpye = one-classification nella svm di fuction, ma non so come farlo esattamente. – dreamscollector
Sì. L'ho capito ora. Ho aggiornato la risposta. Questo è quello di cui hai bisogno :). Spero che aiuti e grazie per il tuo commento prima. – LyzandeR
Sembra essere corretto ora! Grazie! – dreamscollector