我创建了一个人工智能工具,它可以从图像中提取内容,然后检查该内容的完整性和准确性。我正在尝试评估该工具的性能,并为此收集指标。
我有一个类似于下面的结果表;真实值来自对文档的手动地面实况审查,预测值是工具的实际输出。
ID | true | predicted |
-----------------------
1 | 0 | 1 |
2 | 0 | 0 |
3 | 1 | 1 |
4 | 1 | 0 |
我已经能够使用
true
和 predicted
列来使用以下代码获取各种指标:
def calculate_metrics(df, true, predicted):
accuracy = accuracy_score(df[true], df[predicted])
precision = precision_score(df[true], df[predicted])
recall = recall_score(df[true], df[predicted])
f1 = f1_score(df[true], df[predicted])
roc_auc = roc_auc_score(df[true], df[predicted])
return print(f"accuracy: {accuracy}\nprecision: {precision}\nrecall: {recall}\nf1: {f1}\nroc_auc: {roc_auc}")
另外,我想绘制一条 ROC 曲线。我能够获得 roc_auc 分数,并假设我可以从那里进行绘图,但我很难弄清楚到底如何做到这一点。看起来我需要一个模型估计器来确定概率,然后从那里我可以创建绘图,但我不清楚如何使用我获得的数据来做到这一点。
是否可以使用我的结果创建 ROC 曲线?如果可以,我该怎么做?
是否可以使用我的结果创建 ROC 曲线?如果可以,我该怎么做?
不。您需要让模型生成观察结果属于某个类别的概率,而不是预测的类别。 ROC 曲线的要点在于,它允许您直观地了解确定数据属于任一类别的概率的不同阈值如何影响真阳性率和假阳性率。
但是,这些数据是经过阈值处理后的,这意味着您无法可视化不同阈值的效果。您需要模型输出概率而不是预测类别才能执行此可视化。