2016-04-04 15 views
0

Click here to access the train and test data I used. Ich bin neu in SVM. Ich habe das SVM-Paket in R ausprobiert, um meine Daten zu trainieren, die aus 40 Attributen und 39 Labels bestehen. Alle Attribute sind vom doppelten Typ (die meisten davon sind Nullen oder Einsen, weil ich eine Dummy-Kodierung an den kategorischen Attributen durchgeführt habe), die Klassenbezeichnung hatte verschiedene Zeichenfolgen, die ich später in einen Faktor umwandelte und jetzt vom Ganzzahl-Typ.Fehler in predict.svm in R

model=svm(Category~.,data=train1,scale=FALSE) 
p1=predict(model,test1,"prob") 

Das war das Ergebnis, das ich bekam, nachdem ich das Modell mit SVM trainiert hatte.

Call: 
svm(formula = Category ~ ., data = train1, scale = FALSE) 
Parameters: 
    SVM-Type: C-classification 
    SVM-Kernel: radial 
    cost: 1 
    gamma: 0.02564103 

    Number of Support Vectors: 2230 

habe ich die Funktion

Error in predict.svm(model, test1, "prob") : 
NAs in foreign function call (arg 1) 
In addition: Warning message: 
In predict.svm(model, test1, "prob") : NAs introduced by coercion 

vorhersagen, ich bin nicht zu verstehen, warum dieser Fehler erscheint, wird, überprüfte ich alle Attribute meiner Trainingsdaten keiner von ihnen in ihnen NA haben. Bitte hilf mir dabei. Dank

+0

Sie sollten ein [reproduzierbares Beispiel] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) bereitstellen, das Beispieldaten enthält, um den Fehler zu reproduzieren. Das Problem ist wahrscheinlich mit Ihren Daten, aber das ist der Teil, den Sie nicht gezeigt haben, so dass es schwierig ist zu sagen, was falsch sein könnte. – MrFlick

+0

Ich habe den Datensatz und den Code hinzugefügt. Bitte überprüfen sie es. –

Antwort

1

Ich nehme an, Sie sind mit dem Paket e1071 (nicht angeben, welches Paket verwenden Sie, und soweit ich weiß, gibt es kein Paket svm genannt).

Die Fehlermeldung ist verwirrend, aber das Problem besteht darin, dass Sie "prob" als drittes Argument übergeben, während die Funktion einen booleschen Wert erwartet. Versuchen Sie es so:

require(e1071) 
model=svm(Category~.,data=train1, scale=FALSE, probability=TRUE) 
p1=predict(model,test1, probability = TRUE) 
head(attr(p1, "probabilities")) 

Dies ist ein Beispiel für die Ausgabe, die ich bekomme.

WARRANTS OTHER OFFENSES LARCENY/THEFT VEHICLE THEFT VANDALISM NON-CRIMINAL ROBBERY ASSAULT WEAPON LAWS BURGLARY 
1 0.04809877  0.1749634  0.2649921 0.02899535 0.03548131 0.1276913 0.02498949 0.08322866 0.01097913 0.03800846 
    SUSPICIOUS OCC DRUNKENNESS FORGERY/COUNTERFEITING DRUG/NARCOTIC STOLEN PROPERTY SECONDARY CODES TRESPASS MISSING PERSON 
1 0.03255891  0.003790755 0.006249521 0.01944938  0.004843043  0.01305858 0.009727582  0.01840337 
    FRAUD KIDNAPPING  RUNAWAY DRIVING UNDER THE INFLUENCE SEX OFFENSES FORCIBLE PROSTITUTION DISORDERLY CONDUCT  ARSON 
1 0.01884472 0.006089563 0.001378799     0.003289503   0.01071418 0.004562048  0.003107619 0.002124643 
    FAMILY OFFENSES LIQUOR LAWS  BRIBERY EMBEZZLEMENT  SUICIDE 
1 0.0004787845 0.001669914 0.0007471968 0.0007465053 0.0007374036 

Ich hoffe, es hilft.

+0

Es tut mir leid, ich habe nicht den Paketnamen seiner E1071 wie die, die Sie verwendet haben erwähnt. –

+0

Gut. Hoffe es hat funktioniert. – lrnzcig