首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的精度、召回率和f-测量

问R中的精度、召回率和f-测量
EN

Stack Overflow用户
提问于 2012-09-25 04:23:57
回答 4查看 29.3K关注 0票数 9

我已经有一段时间没有使用R了,所以也许我只是还不习惯它,但是..我在R中有一个表,有两列,第一列是预测值(值可以是0或1),第二列是实际值(也是0或1)。我需要找到召回率、精确度和f-measure,但在R中找不到一个好的函数(我也读到了ROCR,但我所能做的就是创建一些图,但我真的不需要图,我需要的是数字)。

在R中有没有什么好的函数来寻找精确度,召回率和f-度量?有什么不同的方法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-09-25 06:40:21

首先,我创建一个数据集,如下所示

代码语言:javascript
复制
> predict <- sample(c(0, 1), 20, replace=T)
> true <- sample(c(0, 1), 20, replace=T)

我认为预测值中的那些1就是检索到的值。检索的总数量为

代码语言:javascript
复制
> retrieved <- sum(predict)

精度,即检索到的相关实例的分数,是

代码语言:javascript
复制
> precision <- sum(predict & true) / retrieved

Recall是检索到的相关实例的分数,是

代码语言:javascript
复制
> recall <- sum(predict & true) / sum(true)

F度量是2*精度*召回/(精度+召回)是

代码语言:javascript
复制
> Fmeasure <- 2 * precision * recall / (precision + recall)
票数 23
EN

Stack Overflow用户

发布于 2016-02-14 23:14:48

只是将Patrick的答案整齐地打包到一个函数中……

代码语言:javascript
复制
measurePrecisionRecall <- function(predict, actual_labels){
  precision <- sum(predict & actual_labels) / sum(predict)
  recall <- sum(predict & actual_labels) / sum(actual_labels)
  fmeasure <- 2 * precision * recall / (precision + recall)

  cat('precision:  ')
  cat(precision * 100)
  cat('%')
  cat('\n')

  cat('recall:     ')
  cat(recall * 100)
  cat('%')
  cat('\n')

  cat('f-measure:  ')
  cat(fmeasure * 100)
  cat('%')
  cat('\n')
}
票数 10
EN

Stack Overflow用户

发布于 2018-10-19 05:12:34

您可以使用caret包中的confusionMatrix()函数获取所有这些指标。

代码语言:javascript
复制
# Create a sample
predicted <- as.factor(sample(c(0, 1), 100, replace=T))
realized  <- as.factor(sample(c(0, 1), 100, replace=T))

# Compute the confusion matrix and all the statistics
result <- confusionMatrix(predicted, realized, mode="prec_recall")

result
result$byClass["Precision"]
result$byClass["Recall"]
result$byClass["F1"]
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12572357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档