编写代码在测试集上计算准确率、精确率和召回率
时间: 2024-10-14 22:11:48 浏览: 16
在编写代码计算测试集上的准确率、精确率和召回率时,通常涉及分类任务的性能评估。假设我们有一个二分类模型,预测结果分为正类(True Positives, TP)、负类(True Negatives, TN)、误报(False Positives, FP)和漏报(False Negatives, FN)。以下是基本步骤:
1. **初始化计数器**:
- TP_count = 0 (真正例)
- TN_count = 0 (真负例)
- FP_count = 0 (假正例)
- FN_count = 0 (假负例)
2. **遍历测试数据**:
对于每个样本的真实标签和预测标签,更新计数器:
- 如果真实标签为正,预测也为正,则TP_count加一;
- 否则,如果真实标签为负,预测也为负,则TN_count加一;
- 若真实标签为负,但预测为正,则FP_count加一;
- 真实标签为正,但预测为负,则FN_count加一。
3. **计算指标**:
- **准确率 (Accuracy)**: `(TP_count + TN_count) / (TP_count + TN_count + FP_count + FN_count)`
- **精确率 (Precision)**: `TP_count / (TP_count + FP_count)`,即正确预测为正的比例
- **召回率 (Recall/Sensitivity)**: `TP_count / (TP_count + FN_count)`,即实际为正被正确识别的比例
4. **返回值**:
返回上述三个计算得到的数值作为模型在测试集上的性能指标。
```python
def calculate_metrics(y_true, y_pred):
tp = np.sum((y_true == 1) & (y_pred == 1))
tn = np.sum((y_true == 0) & (y_pred == 0))
fp = np.sum((y_true == 0) & (y_pred == 1))
fn = np.sum((y_true == 1) & (y_pred == 0))
accuracy = (tp + tn) / (tp + tn + fp + fn)
precision = tp / (tp + fp)
recall = tp / (tp + fn)
return accuracy, precision, recall
# 使用示例
test_labels = [1, 0, 1, 0, 1]
predicted_labels = [1, 0, 1, 0, 0]
accuracy, precision, recall = calculate_metrics(test_labels, predicted_labels)
```
阅读全文