R 中的 predict.svm 错误

Error in predict.svm in R

Click here to access the train and test data I used. 我是 SVM 新手。我正在尝试 R 中的 svm 包来训练我的数据,其中包含 40 个属性和 39 个标签。所有属性都是双精度类型(大多数是 0 或 1,因为我对分类属性执行了虚拟编码),class 标签是不同的字符串,后来我将其转换为一个因子,现在它是 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

我不明白为什么会出现此错误,我检查了训练数据的所有属性 none 其中有 NA。请帮我解决一下这个。 谢谢

我假设您正在使用 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

希望对您有所帮助。