Dendrobates
Dendrobates

Reputation: 3534

svm {e1071} predict creates larger array of predicted values than expected

I'm using Support Vector Machine (SVM, package e1071) within R to build a classification model and out-of-sample predicting a 7-factor class.

The problem is, when using the predict function, I obtain a array, much larger than the number of rows in the validation set. See code and results below.

Any suggestions about what goes wrong? Do I miss-interpret the predict function in the SVM package?

install.packages("e1071","caret")
library(e1071)
library(caret)

data <- data.frame(replicate(10,sample(0:6,1000,rep=TRUE)))

trainIndex <- createDataPartition(data[,1], p = 0.8,
                                  list = FALSE,
                                  times = 1)

trainset <- data[trainIndex,2:10]
validationset <- data[-trainIndex,2:10]

trainlabel <- data[trainIndex,1]
validationlabel <- data[-trainIndex,1]

svmModel <- svm(x = trainset, 
                y = trainlabel, 
                type = "C-classification", 
                kernel = "radial")

# Predict
svmPred <- predict(svmModel, x = validationset)

length(svmPred)
# 800, expected 200 since validationset has nrow = 200.

Upvotes: 2

Views: 322

Answers (1)

CClaire
CClaire

Reputation: 453

It's because x doesn't exist in predict

try :

svmPred <- predict(svmModel, validationset)
length(svmPred)

Upvotes: 2

Related Questions