Ich denke, das ist, was Sie wollen:
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
Ausgang:
-Zusammenfassung:
> 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 (nur einige der Prognosen werden hier gezeigt (wo Species = = 'setosa') aus optischen Gründen):
> 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
Vielen Dank für Ihre sehr detaillierten Code, aber ich denke, dass eine Klasse Klassifizierung eine andere Sache. In der Ein-Klassen-Klassifikation liefern Sie nur die Beispiele einer der Klassen zum Trainieren der SVM. Das Modell lernt, nur diese Klasse zu charakterisieren (in der Testphase kann man nur wissen, ob ein Beispiel zu dieser Klasse gehört oder nicht). Ich weiß, dass ich die Option tpye = one-classification in der Funktion svm verwenden muss, aber ich weiß nicht, wie ich das genau machen soll. – dreamscollector
Ja. Ich habe es jetzt herausgefunden. Ich habe die Antwort aktualisiert. Das brauchst du :). Hoffe es hilft und danke für deinen Kommentar vorher. – LyzandeR
Es scheint jetzt zu stimmen! Vielen Dank! – dreamscollector