使用 Python 绘制 PR 曲线、ROC 曲线和代价曲线,计算 AUC、排序损失和 F1 值
本文将指导您使用 Python 绘制 PR 曲线、ROC 曲线和代价曲线,并计算 AUC、排序损失和阈值为 0.5 时的 F1 值。
步骤
- 导入所需的库:
numpy、pandas、sklearn、matplotlib.pyplot。 - 读取 xlsx 文件为 DataFrame。
- 提取真实类别和学习得分列。
- 使用
sklearn.metrics模块计算 PR 曲线和 ROC 曲线的精确率、召回率和阈值。 - 使用
sklearn.metrics模块计算 AUC。 - 绘制 PR 曲线和 ROC 曲线。
- 计算排序损失。
- 计算阈值为 0.5 时的 F1 值。
代码示例
import numpy as np
import pandas as pd
from sklearn.metrics import precision_recall_curve, roc_curve, auc, f1_score
import matplotlib.pyplot as plt
# 读取 xlsx 文件为 DataFrame
df = pd.read_excel('your_file.xlsx')
# 提取真实类别和学习得分列
y_true = df['真实类别']
y_score = df['学习得分']
# 计算 PR 曲线的精确率、召回率和阈值
precision, recall, thresholds_pr = precision_recall_curve(y_true, y_score)
# 计算 ROC 曲线的假正率、真正率和阈值
fpr, tpr, thresholds_roc = roc_curve(y_true, y_score)
# 计算 AUC
auc_pr = auc(recall, precision)
auc_roc = auc(fpr, tpr)
# 绘制 PR 曲线
plt.figure()
plt.plot(recall, precision, color='darkorange', label='PR curve (AUC = %0.2f)' % auc_pr)
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.title('Precision-Recall Curve')
plt.legend(loc='lower left')
plt.grid()
plt.show()
# 绘制 ROC 曲线
plt.figure()
plt.plot(fpr, tpr, color='darkorange', label='ROC curve (AUC = %0.2f)' % auc_roc)
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic Curve')
plt.legend(loc='lower right')
plt.grid()
plt.show()
# 计算排序损失
loss = np.sum((1 - y_true) * y_score) / np.sum(1 - y_true)
# 计算阈值为 0.5 时的 F1 值
threshold = 0.5
y_pred = np.where(y_score >= threshold, 1, 0)
f1 = f1_score(y_true, y_pred)
print('AUC:', auc_pr)
print('排序损失:', loss)
print('阈值为 0.5 时的 F1 值:', f1)
请将上述代码保存为一个 Python 脚本文件(例如 plot_curves.py),然后将你的 xlsx 文件放在同一目录下,并运行该脚本文件。程序将会绘制 PR 曲线和 ROC 曲线,并输出 AUC、排序损失和阈值为 0.5 时的 F1 值。
注意:
- 代码示例中的
your_file.xlsx应该替换为你的 xlsx 文件的路径。 - 你需要确保安装了相应的 Python 库。
原文地址: https://www.cveoy.top/t/topic/tOp 著作权归作者所有。请勿转载和采集!