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
希望对您有所帮助。
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
希望对您有所帮助。