F1-score
时间: 2025-05-30 21:54:57 AIGC 浏览: 88
### F1-Score 的概念
F1-Score 是一种用于评估分类模型性能的指标,尤其适用于处理类别不平衡的数据集。它综合了精确率(Precision)和召回率(Recall),并通过两者的调和平均数得出一个单一的评分值[^1]。
#### 精确率与召回率
- **精确率(Precision)**:表示被分类器预测为正类别的样本中有多少比例实际上是正类别。
\[
\text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}}
\]
- **召回率(Recall)**:表示实际为正类别的样本中有多少比例被正确预测为正类别。
\[
\text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}}
\]
其中:
- TP(True Positive):真实值为正类且预测也为正类的数量;
- FP(False Positive):真实值为负类但预测为正类的数量;
- FN(False Negative):真实值为正类但预测为负类的数量;
---
### F1-Score 的计算公式
F1-Score 定义为精确率和召回率的调和平均数,其取值范围在 0 到 1 之间,越接近 1 表示模型表现越好[^2]。具体公式如下:
\[
F1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}
\]
如果 Precision 或 Recall 中有一个为零,则 F1 值也会变为零。
---
### 多分类情况下的 F1-Score
对于多分类问题,可以通过 `average` 参数指定如何聚合不同类别的 F1-Score 结果。常见的选项包括:
- **'micro'**:全局计算 TP、FP 和 FN 后再计算 F1-Score;
- **'macro'**:分别计算每个类别的 F1-Score 并取平均值;
- **'weighted'**:基于支持度加权平均各分类别的 F1-Score[^3]。
以下是 Python 实现的一个简单例子:
```python
from sklearn.metrics import f1_score
y_true = [0, 1, 2, 0, 1, 2]
y_pred = [0, 2, 1, 0, 0, 1]
# Macro-average F1 Score
print(f1_score(y_true, y_pred, average='macro'))
# Weighted-average F1 Score
print(f1_score(y_true, y_pred, average='weighted'))
```
---
### 应用场景
F1-Score 特别适合于类别分布不均衡的情况,因为它不仅关注模型对正类别的预测能力(通过 Recall 衡量),还兼顾了错误标记的比例(通过 Precision 衡量)。因此,在诸如垃圾邮件检测、疾病诊断等领域中广泛使用[^4]。
---
阅读全文
相关推荐



















