R中的predict.svm出错

时间:2016-04-04 01:38:11

标签: r machine-learning svm na predict

Click here to access the train and test data I used. 我是SVM的新手。我在R中尝试使用svm软件包来训练我的数据,其中包含40个属性和39个标签。所有属性都是双重类型(大多数是0或1,因为我在分类属性上执行了伪编码),类标签是不同的字符串,我后来转换为因子,现在它是Integer类型。

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。请帮我解决一下这个。 感谢

1 个答案:

答案 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

希望它有所帮助。