Я думаю, что это то, что вы хотите:
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
Выход:
-summary:
> 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 (только некоторые из предсказаний показаны здесь (где Видовой = = 'setosa') по визуальной причине):
> 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
Спасибо вам большое за очень подробный код, но я думаю, что один класс классификации другая вещь. В классификации одного класса вы предоставляете только примеры одного из классов для обучения SVM. Модель учится характеризовать только этот класс (на этапе тестирования вы можете знать только, принадлежит или нет пример этому классу). Я знаю, что мне нужно использовать опцию tpye = one-классификацию в fuction svm, но я не знаю, как это сделать точно. – dreamscollector
Да. Я понял это сейчас. Я обновил ответ. Это то, что вам нужно :). Надеюсь, что это поможет и спасибо за ваш комментарий раньше. – LyzandeR
Теперь кажется правильным! Спасибо! – dreamscollector