我使用SVM的一个非常简单的例子,但是预测方法返回的结果并不总是相同的。
这是我运行的代码:
library(e1071)
##不要这样做:r_m(list = ls())
x = c(2,3,3,1,1,2,3 , 1,1,2,2,3,2,3)
dim(x) <- c(7 ,2)
y = factor(c(T,T,T,F,F,F,F))
DF <- data.frame(x = x, y = y)
model = svm(y ~ x, data = DF, method = "C-classification", cost = 1,
kernel = "linear")
# exactly the same data as x
xtest = c(2,3,3,1,1,2,3 , 1,1,2,2,3,2,3)
dim(xtest) <- c(7 ,2)
predict(model, newdata = data.frame(x = xtest), prob=TRUE)
predict(model, newdata = data.frame(x = xtest), prob=TRUE)
predict(model, newdata = data.frame(x = xtest), prob=TRUE)
但我有以下输出:
> predict(model, newdata = data.frame(x = xtest), prob=TRUE)
1 2 3 4 5 6 7
TRUE TRUE TRUE TRUE TRUE TRUE TRUE
attr(,"probabilities")
TRUE FALSE
1 0.5 0.5
2 0.5 0.5
3 0.5 0.5
4 0.5 0.5
5 0.5 0.5
6 0.5 0.5
7 0.5 0.5
Levels: FALSE TRUE
> predict(model, newdata = data.frame(x = xtest), prob=TRUE)
1 2 3 4 5 6 7
TRUE TRUE TRUE TRUE TRUE TRUE TRUE
attr(,"probabilities")
TRUE FALSE
1 0.5 0.5
2 0.5 0.5
3 0.5 0.5
4 0.5 0.5
5 0.5 0.5
6 0.5 0.5
7 0.5 0.5
Levels: FALSE TRUE
> predict(model, newdata = data.frame(x = xtest), prob=TRUE)
1 2 3 4 5 6 7
FALSE FALSE FALSE FALSE FALSE FALSE FALSE
attr(,"probabilities")
TRUE FALSE
1 3.000001e-14 1
2 3.000001e-14 1
3 3.000001e-14 1
4 3.000001e-14 1
5 3.000001e-14 1
6 3.000001e-14 1
7 3.000001e-14 1
Levels: FALSE TRUE
有时它会连续3次显示相同的输出,但有时会显示不同的内容,如上所示。
注意:我正在使用RStudio
为什么会这样? 为什么预测方法永远不会预测一些连贯的东西?