本文将指导您使用 Python 绘制 PR 曲线、ROC 曲线和代价曲线,并计算 AUC、排序损失和阈值为 0.5 时的 F1 值。

步骤

  1. 导入所需的库:numpypandassklearnmatplotlib.pyplot
  2. 读取 xlsx 文件为 DataFrame。
  3. 提取真实类别和学习得分列。
  4. 使用 sklearn.metrics 模块计算 PR 曲线和 ROC 曲线的精确率、召回率和阈值。
  5. 使用 sklearn.metrics 模块计算 AUC。
  6. 绘制 PR 曲线和 ROC 曲线。
  7. 计算排序损失。
  8. 计算阈值为 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 库。
使用 Python 绘制 PR 曲线、ROC 曲线和代价曲线,计算 AUC、排序损失和 F1 值

原文地址: https://www.cveoy.top/t/topic/tOp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录