📜  如何计算 R 中的 F1 分数?(1)

📅  最后修改于: 2023-12-03 14:53:17.009000             🧑  作者: Mango

如何计算 R 中的 F1 分数?

在机器学习和数据分析中,F1 分数是一种广泛使用的评估指标,用于衡量分类模型的性能。在 R 中,你可以使用一些方法来计算 F1 分数。

什么是 F1 分数?

F1 分数是准确率 (precision) 和召回率 (recall) 的调和平均值。准确率衡量模型预测的正例中真实正例的比例,而召回率衡量模型找到的真实正例的比例。

F1 分数的计算公式如下:

F1 = 2 * (precision * recall) / (precision + recall)
如何计算 F1 分数?

在 R 中,你可以使用以下方法来计算 F1 分数:

方法 1: 使用 caret 包
# 安装 caret 包(如果尚未安装)
install.packages("caret")

# 载入 caret 包
library(caret)

# 创建一个实际标签向量和一个预测标签向量
actual_labels <- c(1, 0, 1, 1, 0)
predicted_labels <- c(1, 1, 0, 1, 0)

# 使用 confusionMatrix 函数计算 F1 分数
confusion_matrix <- confusionMatrix(data = factor(predicted_labels), reference = factor(actual_labels))
f1_score <- confusion_matrix$byClass["F1"]

使用上述代码中的 "actual_labels" 和 "predicted_labels" 向量替换成你自己的实际和预测标签向量。confusionMatrix 函数将计算混淆矩阵并返回 F1 分数。

方法 2: 自定义函数
# 创建一个自定义函数来计算 F1 分数
f1_score <- function(actual_labels, predicted_labels) {
  tp <- sum(actual_labels == 1 & predicted_labels == 1)
  fp <- sum(actual_labels == 0 & predicted_labels == 1)
  fn <- sum(actual_labels == 1 & predicted_labels == 0)
  
  precision <- tp / (tp + fp)
  recall <- tp / (tp + fn)
  
  f1 <- 2 * (precision * recall) / (precision + recall)
  
  return(f1)
}

# 使用自定义函数计算 F1 分数
actual_labels <- c(1, 0, 1, 1, 0)
predicted_labels <- c(1, 1, 0, 1, 0)
f1 <- f1_score(actual_labels, predicted_labels)

在上述代码中,自定义函数 f1_score 接受实际标签向量和预测标签向量作为参数,并使用这些向量来计算 F1 分数。

注意事项

请确保在计算 F1 分数之前,你已经定义和计算了准确率和召回率。你可以使用类似的方法来计算这些度量。

以上是两种计算 R 中 F1 分数的方法。你可以根据个人偏好选择其中一种方法来计算你的模型的 F1 分数。