在机器学习和深度学习中,“通过建立数学模型验证模型推理结果的准确率”主要指的是用数学方法(统计指标)来衡量模型的推理性能。
这实际上就是模型评估,常见的做法包括计算准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1分数(F1-score)、混淆矩阵等。
下面我详细讲解,并结合你的实际代码流程,给出“数学模型”与“代码实现”的双重解读。
1. 数学模型:准确率的定义
对于分类问题,最常用的指标是准确率(Accuracy):
$$ \text{Accuracy} = \frac{\text{Number of Correct Predictions}}{\text{Total Number of Predictions}} $$
即:
- 正确预测的图片数量 ÷ 总推理图片数量
2. 验证方法流程
(1)准备“有真实标签”的验证集
- 假设你有一份验证集
,里面每张图片都有人工标注的真实类别(ground truth)。val_labels.csv
- 用你的模型对这些图片批量推理,得到“模型预测类别”。
(2)比对真实标签和预测标签
- 对每张图片,比较“模型预测类别”与“真实类别”是否一致。
- 统计所有图片中,预测正确的数量。
(3)计算准确率
- 用上面的公式计算即可。
3. 代码实现(严格兼容你的风格)
假设你已经有验证集csv(格式同selector导出的csv,有filename和label两列),推理后生成了预测csv(filename和pred_label两列)。
合并比对并计算准确率:
import pandas as pd
# 1. 读取真实标签和模型预测
val_df = pd.read_csv('D:/ToGer/research/MedievalArchitecture/dataset/categories/val_labels.csv')
pred_df = pd.read_csv('batch_predict_result.csv')
# 2. 按图片路径合并,确保一一对应
df = pd.merge(val_df, pred_df, left_on='filename', right_on='filename')
# 3. 判断预测是否正确
df['correct'] = df['label'] == df['pred_label']
# 4. 计算准确率
accuracy = df['correct'].mean()
print(f'模型在验证集上的准确率为:{accuracy:.4f}')
# (可选)保存详细比对结果
df.to_csv('val_compare_result.csv', index=False, encoding='utf-8-sig')
4. 其他常见指标(数学表达式)
- 精确率(Precision)
$$ \text{Precision} = \frac{TP}{TP + FP}$$ - 召回率(Recall)
$$ \text{Recall} = \frac{TP}{TP + FN}$$ - F1分数
$$ F1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}$$ - 混淆矩阵
用于多分类场景,统计每个类别被预测成各类别的次数。
5. 总结
- “通过数学模型验证推理准确率”本质上就是用统计指标(如准确率)来量化模型推理结果与真实标签的一致性。
- 流程是:有真实标签的验证集 → 模型推理 → 比对 → 计算准确率等指标。
- 代码实现非常简单,pandas即可搞定。
如需精确率/召回率/F1/混淆矩阵的详细代码,或有其它相关问题,欢迎随时问我!
0 条评论