R中e1071包的svm函数中概率= TRUE的功能

Posted

技术标签:

【中文标题】R中e1071包的svm函数中概率= TRUE的功能【英文标题】:Functionality of probability=TRUE in svm function of e1071 package in R 【发布时间】:2014-08-03 13:40:34 【问题描述】:

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

model <- svm (Type ~ ., data, probability=TRUE, cost = 100, gamma = 1)

【问题讨论】:

svm 不在基础 R 中 - 请说明您正在使用哪个包。 来自?svm "概率:表示模型是否应该允许概率预测。" 我使用e1071 包。 @user3681744 将其添加到问题中。人们应该通过阅读问题本身来获取所有相关信息 - 他们不应该深入研究 cmets。 【参考方案1】:

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

但是请注意,设置probability=TRUE 以调用svm 很重要,而不仅仅是调用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

【讨论】:

当我访问属性时我只得到 NULL,我也得到一个二进制输出,我期待概率 @bicepjai 在什么情况下??当你运行我上面帖子中的代码时? 没有你的代码给出正确的输出,我的代码和我的数据(二进制预测器和其他因素和数字自变量)只给出二进制数而不是概率。 @bicepjai 你确定你在predict 通话中使用probability=TRUE 吗?如果是这样,(如果还没有被问到)您可能需要发布一个新问题,并附上一个重现您的问题的示例。很难从 cmets 找出哪里出了问题。 在训练和预测中这些概率是如何计算的?是通过对 SVM 分数(每个点到分离超平面的有符号距离)拟合逻辑回归来完成的吗?

以上是关于R中e1071包的svm函数中概率= TRUE的功能的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中为 svm 编写自定义内核

R(e1071) 中是不是有直接实现多类 SVM

R语言使用e1071包中的svm函数构建支持向量机SVM模型(Support vector machines)默认使用RBF核函数使用table函数计算混淆矩阵评估分类模型性能

解释 naiveBayes 分类器在 e1071:R 中返回的条件概率

R:在 e1071 包中是不是有比 libsvm 替代的 SVM 实现? [关闭]

R e1071 预测与 libsvm 不同