我在R中使用e1071包来构建一个单类支持向量机模型。我不知道如何做到这一点,我也没有在互联网上找到任何例子。
例如,有人可以给出一个示例代码来表征具有单类分类模型的"iris“数据集中的类"setosa”,然后测试同一数据集中的所有示例(以便检查哪些示例属于"setosa“类的表征,哪些示例不属于)?
发布于 2014-12-09 18:01:59
我想这就是你想要的:
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 发布于 2015-05-04 15:09:19
精确度较高的代码: train=78.125 test= 91.53:
library(e1071)
library(caret)
library(NLP)
library(tm)
data(iris)
iris$SpeciesClass[iris$Species=="versicolor"] <- "TRUE"
iris$SpeciesClass[iris$Species!="versicolor"] <- "FALSE"
trainPositive<-subset(iris,SpeciesClass=="TRUE")
testnegative<-subset(iris,SpeciesClass=="FALSE")
inTrain<-createDataPartition(1:nrow(trainPositive),p=0.6,list=FALSE)
trainpredictors<-trainPositive[inTrain,1:4]
trainLabels<-trainPositive[inTrain,6]
testPositive<-trainPositive[-inTrain,]
testPosNeg<-rbind(testPositive,testnegative)
testpredictors<-testPosNeg[,1:4]
testLabels<-testPosNeg[,6]
svm.model<-svm(trainpredictors,y=NULL,
type='one-classification',
nu=0.10,
scale=TRUE,
kernel="radial")
svm.predtrain<-predict(svm.model,trainpredictors)
svm.predtest<-predict(svm.model,testpredictors)
# confusionMatrixTable<-table(Predicted=svm.pred,Reference=testLabels)
# confusionMatrix(confusionMatrixTable,positive='TRUE')
confTrain<-table(Predicted=svm.predtrain,Reference=trainLabels)
confTest<-table(Predicted=svm.predtest,Reference=testLabels)
confusionMatrix(confTest,positive='TRUE')
print(confTrain)
print(confTest)
https://stackoverflow.com/questions/27375517
复制相似问题