机器学习PR和ROC曲线
时间: 2025-05-14 07:03:33 浏览: 23
### 机器学习中的PR曲线与ROC曲线
#### PR曲线概念
精确率-召回率曲线(Precision-Recall Curve,简称PR曲线)是一种用于评估分类模型性能的工具。它通过在不同阈值下绘制精确率(Precision)和召回率(Recall)的变化趋势来反映模型的表现[^3]。
- **精确率 (Precision)** 表示被预测为正类的样本中有多少比例实际上是正类。
- **召回率 (Recall)** 则衡量实际正类中有多大比例被成功识别为正类。
对于类别分布不均衡的情况,PR曲线能够更好地体现模型对少数类别的区分能力[^4]。
#### ROC曲线概念
接收者操作特性曲线(Receiver Operating Characteristic Curve,简称ROC曲线)同样用来评价二分类模型的好坏。其核心思想是在不同的决策阈值下观察假阳率(False Positive Rate, FPR)和真阳率(True Positive Rate, TPR)之间的权衡关系[^1]。
- **FPR** 定义为错误标记为正类的比例。
- **TPR** 是指正确检测到的实际正类所占总正类的比例。
通常认为,当ROC曲线越接近左上角时,说明该分类器具有更好的辨别力。
#### 联系与区别
两者均基于调整分类边界得到多组统计量并绘制成图形来进行质量评判,但它们侧重点有所不同:
- **共同点**: 都依赖于改变判定界限从而获取多个可能的结果组合;
- **主要差异**:
- 应用场合方面,在面对极度倾斜的数据集时,由于PR图仅考虑目标群体内部情况而不受背景干扰影响较大这一特点使其成为首选方案之一。
- 另外从直观感受上看,AUC值可以作为整体效能度量标准应用于两种图表之中,不过具体数值意义会因类型各异而有所偏差[^5]。
```python
import numpy as np
from sklearn.metrics import precision_recall_curve, roc_curve
# 假设y_true是真实标签,y_scores是预测得分
precision, recall, _ = precision_recall_curve(y_true, y_scores)
fpr, tpr, _ = roc_curve(y_true, y_scores)
def plot_curves():
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
# 绘制PR曲线
ax.plot(recall, precision, label='PR curve')
# 绘制ROC曲线
ax.plot(fpr, tpr, label='ROC curve', linestyle="--")
ax.set_xlabel('Recall / False Positive Rate')
ax.set_ylabel('Precision / True Positive Rate')
ax.legend(loc="best")
plt.show()
plot_curves()
```
阅读全文
相关推荐


















