2016-04-04 74 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