如何在 R 中使用 libSVM(包 e1071)获得概率?

Posted

技术标签:

【中文标题】如何在 R 中使用 libSVM(包 e1071)获得概率?【英文标题】:How get probability using libSVM (package e1071) in R? 【发布时间】:2016-12-30 11:32:47 【问题描述】:

我正在尝试在 libSVM(R 中的包 e1071)中获取概率输出,但我的数据集的输出仅为 TRUE 或 FALSE。

关注代码:

dadosBrutos<-read.csv("Dataset/circle.data",header = FALSE)


svm.modelo <- svm(V3 ~ ., 
              data=conjuntoTreinamento,
              type='C-classification',
              probability=TRUE)
              #cost=c, 
              #type='C-classification', 
              #kernel='linear',
              #scale=FALSE, 
              #verbose=FALSE 
svm.predict <- predict(svm.modelo,
                       subset(conjuntoTreinamento, 
                       select = -V3),
                       probability=TRUE)

posterior <- as.matrix(svm.predict)

但是,例如,当我使用数据集 Iris 时,概率输出是 % 而不是类的名称。

library(e1071)

model <- svm(Species ~ ., data = iris, probability=TRUE)
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

谁能帮我理解这个?

【问题讨论】:

【参考方案1】:

你必须从属性中提取它:

attr(svm.predict, "概率")

查看: https://stat.ethz.ch/pipermail/r-help/2006-February/088476.html

【讨论】:

以上是关于如何在 R 中使用 libSVM(包 e1071)获得概率?的主要内容,如果未能解决你的问题,请参考以下文章

r: 使用库读取 libsvm 文件 (e1071)

如何将数据从 libsvm 导入到 R

R e1071 预测与 libsvm 不同

如何在 R 中使用 libsvm 加载 SVM 模型拟合/集成

libsvm / e1071:获取二进制类的非二进制预测值?

查询包 e1071 R 中的朴素贝叶斯算法