2016-04-04 80 views
0

Click here to access the train and test data I used.我是SVM的新成員。我正在嘗試R中的svm包來訓練我的數據,其中包含40個屬性和39個標籤。所有屬性都是雙重類型(大多數是0或1,因爲我在分類屬性上執行了虛擬編碼),類標籤是不同的字符串,後來我轉換爲一個因子,現在是整數類型。R中的prediction.svm中的錯誤

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

這是我得到的結果,我一旦使用SVM訓練模型。

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 

我用了預測功能

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 

我不理解爲什麼這個錯誤出現,我檢查了我的訓練數據沒有人的所有屬性都NA在他們。請幫我解決一下這個。 謝謝

+0

您應該提供包含示例數據以重現錯誤的[可重現示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。問題可能與您的數據有關,但這是您未顯示的部分,因此很難說出可能的錯誤。 – MrFlick

+0

我添加了數據集和代碼。請檢查它。 –

回答

1

我假設你正在使用包e1071(你不指定你使用哪個包,並且據我所知沒有包叫svm)。

錯誤消息令人困惑,但問題是您傳遞「prob」作爲第三個參數,而函數需要一個布爾值。試試這樣:

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

這是我得到的輸出樣本。

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 

希望它有幫助。

+0

對不起,我沒有提到它的e1071包名,就像你用過的那個。 –

+0

好。那麼希望它工作。 – lrnzcig