Fan*_*nny 6 r precision-recall
我有一段时间没有使用R,所以也许我还没有习惯它,但是......我在R中有一个带有两个列的表,第一个有预测值(一个值可以是0或1 ),第二个具有实际值(也是0或1).我需要找到回忆,精确度和f度量,但在R中找不到它的好功能.(我也读过ROCR,但我所能做的就是创建一些情节,但我真的不需要情节,我需要数字).
在R中找到精度,召回和f测量是否有任何好的功能?有没有不同的方法呢?
Pat*_* Li 21
首先,我创建一个数据集
> predict <- sample(c(0, 1), 20, replace=T)
> true <- sample(c(0, 1), 20, replace=T)
Run Code Online (Sandbox Code Playgroud)
我认为预测值中的那些1是检索到的.检索的总数是
> retrieved <- sum(predict)
Run Code Online (Sandbox Code Playgroud)
精度是相关的检索实例的一部分,是
> precision <- sum(predict & true) / retrieved
Run Code Online (Sandbox Code Playgroud)
回想一下,哪个是检索到的相关实例的一部分,是
> recall <- sum(predict & true) / sum(true)
Run Code Online (Sandbox Code Playgroud)
F测量是2*精度*召回/(精确+召回)是
> Fmeasure <- 2 * precision * recall / (precision + recall)
Run Code Online (Sandbox Code Playgroud)
只需将帕特里克的精彩答案巧妙地整合到一个功能中......
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')
}
Run Code Online (Sandbox Code Playgroud)
小智 6
你可以得到所有这些指标与功能confusionMatrix()从caret包。
# 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"]
Run Code Online (Sandbox Code Playgroud)