在R语言的e1071包中,svm函数中probability=TRUE参数的功能是什么?

18
在 R 中,e1071 包中的 svm 函数中的 probability=TRUE 参数的功能是什么?
model <- svm (Type ~ ., data, probability=TRUE, cost = 100, gamma = 1)

svm不在基本的R中,请说明您正在使用哪个包。 - Dason
1
?svm中,"probability: 表示模型是否应允许进行概率预测。" - user3710546
我使用 e1071 包。 - A.M.
1
@user3681744 将其添加到问题中。人们应该从阅读问题本身中获取所有相关信息 - 他们不应该深入评论区。 - Dason
1个回答

36

将模型拟合和预测中的probability参数设置为TRUE,对于每个预测,返回响应变量每个类别的概率向量。这些向量存储在矩阵中,作为预测对象的属性。

例如:

library(e1071)

model <- svm(Species ~ ., data = iris, probability=TRUE)
# (below I'm just predicting to the training dataset - it could of course just 
# as easily be a separate test dataset)
pred <- predict(model, iris, probability=TRUE)

head(attr(pred, "probabilities"))

#      setosa versicolor   virginica
# 1 0.9803339 0.01129740 0.008368729
# 2 0.9729193 0.01807053 0.009010195
# 3 0.9790435 0.01192820 0.009028276
# 4 0.9750030 0.01531171 0.009685342
# 5 0.9795183 0.01164689 0.008834838
# 6 0.9740730 0.01679643 0.009130620

请注意,在调用svm时设置probability=TRUE非常重要,而不仅仅是在调用predict时设置,因为仅设置后者会产生以下结果:

#      setosa versicolor virginica
# 1 0.3333333  0.3333333 0.3333333
# 2 0.3333333  0.3333333 0.3333333
# 3 0.3333333  0.3333333 0.3333333
# 4 0.3333333  0.3333333 0.3333333
# 5 0.3333333  0.3333333 0.3333333
# 6 0.3333333  0.3333333 0.3333333

1
当我访问属性时,我只得到了NULL,而且我得到了一个二进制输出,而我期望的是概率。 - bicepjai
你的代码输出正确,而我的代码使用我的数据(二分类预测器和其他因子和数值独立变量)只会得到二进制数字而不是概率值。 - bicepjai
1
@bicepjai,你确定在predict调用中使用了probability=TRUE吗?如果是这样的话(如果还没有被问过),你可能需要发布一个新问题,并提供一个能够重现你的问题的示例。从评论中很难弄清楚哪里出了问题。 - jbaums
这是支持向量机的自然结果还是库的附加功能? - Chris
1
在训练和预测中,这些概率是如何计算的?是通过对SVM分数(每个点到分离超平面的有符号距离)进行逻辑回归拟合来完成的吗? - panc
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接