在机器学习和深度学习中,“通过建立数学模型验证模型推理结果的准确率”主要指的是用数学方法(统计指标)来衡量模型的推理性能
这实际上就是模型评估,常见的做法包括计算准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1分数(F1-score)、混淆矩阵等。

下面我详细讲解,并结合你的实际代码流程,给出“数学模型”与“代码实现”的双重解读。


1. 数学模型:准确率的定义

对于分类问题,最常用的指标是准确率(Accuracy):

$$ \text{Accuracy} = \frac{\text{Number of Correct Predictions}}{\text{Total Number of Predictions}} $$

即:

  • 正确预测的图片数量 ÷ 总推理图片数量

2. 验证方法流程

(1)准备“有真实标签”的验证集

  • 假设你有一份验证集
    val_labels.csv
    ,里面每张图片都有人工标注的真实类别(ground truth)。
  • 用你的模型对这些图片批量推理,得到“模型预测类别”。

(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 条评论

发表回复

Avatar placeholder

您的邮箱地址不会被公开。 必填项已用 * 标注