2016-05-26 10 views
2

Ich verwende Support Vector Machine (SVM, Paket e1071) innerhalb von R, um ein Klassifikationsmodell und Out-of-Sample zur Vorhersage einer 7-Faktor-Klasse zu erstellen.svm {e1071} Vorhersage erstellt größeres Array von vorhergesagten Werten als erwartet

Das Problem ist, wenn ich die Vorhersagefunktion verwende, erhalte ich ein Array, viel größer als die Anzahl der Zeilen im Validierungssatz. Siehe Code und Ergebnisse unten.

Irgendwelche Vorschläge, was schief läuft? Vermisse ich die Vorhersagefunktion im SVM-Paket?

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. 

Antwort

2

Es ist, weil x nicht in existiert vorhersagen

Versuch:

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

Dank! Ich habe die Funktion tatsächlich falsch verstanden. – Dendrobates

+0

Gerne helfen :) – CClaire