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语言使用e1071包中的svm函数构建支持向量机SVM模型(Support vector machines)默认使用RBF核函数使用table函数计算混淆矩阵评估分类模型性能
解释 naiveBayes 分类器在 e1071:R 中返回的条件概率