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。请帮我解决一下这个。 感谢
答案 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
希望它有所帮助。