Python 实现计算多个子集和整个数据集的 AUROC 和 AUPR,并绘制图形
以下是使用 Python 代码计算五个子集的 AUROC 和 AUPR 以及整个大数据集的 AUROC 和 AUPR 的均值,并绘制相应图形的示例:\n\npython\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n# 计算TPR和FPR\ndef compute_tpr_fpr(labels, scores):\n sorted_indices = np.argsort(scores)[::-1]\n sorted_labels = labels[sorted_indices]\n tpr = np.cumsum(sorted_labels) / np.sum(sorted_labels)\n fpr = np.cumsum(1 - sorted_labels) / np.sum(1 - sorted_labels)\n return tpr, fpr\n\n# 计算AUC\ndef compute_auc(tpr, fpr):\n auc = np.sum((fpr[1:] - fpr[:-1]) * (tpr[1:] + tpr[:-1])) / 2\n return auc\n\n# 计算AP\ndef compute_ap(labels, scores):\n sorted_indices = np.argsort(scores)[::-1]\n sorted_labels = labels[sorted_indices]\n tp = np.cumsum(sorted_labels)\n precision = tp / np.arange(1, len(labels) + 1)\n ap = np.sum(precision * sorted_labels) / np.sum(sorted_labels)\n return ap\n\n# 计算AUROC和AUPR\ndef compute_auroc_aupr(labels, scores):\n tpr, fpr = compute_tpr_fpr(labels, scores)\n auroc = compute_auc(tpr, fpr)\n aupr = compute_ap(labels, scores)\n return auroc, aupr\n\n# 读取数据并计算AUROC和AUPR\nfilenames = ['subset1.txt', 'subset2.txt', 'subset3.txt', 'subset4.txt', 'subset5.txt']\naurocs = []\nauprs = []\n\nfor filename in filenames:\n data = np.loadtxt(filename)\n labels = data[:, 0]\n scores = data[:, 1]\n auroc, aupr = compute_auroc_aupr(labels, scores)\n aurocs.append(auroc)\n auprs.append(aupr)\n plt.plot(fpr, tpr, label=f"{filename}: AUROC={auroc:.2f}, AUPR={aupr:.2f}")\n\n# 计算五个子集的AUROC和AUPR的均值\nmean_auroc = np.mean(aurocs)\nmean_aupr = np.mean(auprs)\nprint("Mean AUROC:", mean_auroc)\nprint("Mean AUPR:", mean_aupr)\n\n# 合并五个子集的数据并计算整个大数据集的AUROC和AUPR\nall_data = np.concatenate([np.loadtxt(filename) for filename in filenames])\nall_labels = all_data[:, 0]\nall_scores = all_data[:, 1]\nall_auroc, all_aupr = compute_auroc_aupr(all_labels, all_scores)\nprint("AUROC of the entire dataset:", all_auroc)\nprint("AUPR of the entire dataset:", all_aupr)\n\n# 绘制图形\nplt.xlabel('False Positive Rate')\nplt.ylabel('True Positive Rate')\nplt.legend()\nplt.show()\n\n\n请确保在运行代码之前将文件名替换为实际的文件名,并确保文件格式正确。
原文地址: https://www.cveoy.top/t/topic/njc5 著作权归作者所有。请勿转载和采集!