我来说说什么是pr查询,掌握pr查询方法。

什么是PR查询,掌握PR查询方法

1. PR查询简介

我来说说什么是pr查询,掌握pr查询方法。

PR(Precision-Recall)是一种用于评估分类模型性能的指标,主要用于衡量模型在召回率(Recall)和精确度(Precision)之间的平衡,PR查询是指通过计算不同阈值下的PR值,来确定最佳阈值的方法,这种方法可以帮助我们找到一个既能满足精确度要求,又能达到较高召回率的阈值。

2. PR查询方法

PR查询主要包括以下几个步骤:

2.1 准备数据

我来说说什么是pr查询,掌握pr查询方法。

我们需要准备一个包含真实标签和预测标签的数据集,数据集通常是一个二维数组,其中每一行表示一个样本,第一列是真实标签,第二列是预测标签。

import numpy as np
data = np.array([
    ['A', 'B'],
    ['B', 'A'],
    ['A', 'A'],
    ['B', 'B']
])

2.2 计算混淆矩阵

接下来,我们需要计算混淆矩阵,混淆矩阵是一个二维数组,其中行表示实际类别,列表示预测类别,对于每个样本,我们可以将其真实标签和预测标签填入混淆矩阵中。

def confusion_matrix(data):
    y_true = [row[0] for row in data]
    y_pred = [row[1] for row in data]
    return np.histogram2d(y_true, y_pred, bins=[2, 2])[0] / len(data)
cm = confusion_matrix(data)
print("Confusion Matrix:")
print(cm)

2.3 计算PR值

我来说说什么是pr查询,掌握pr查询方法。

有了混淆矩阵后,我们可以计算PR值,PR值是一个二维数组,其中每个元素表示对应阈值下的PR值,我们可以通过遍历所有可能的阈值来计算这些值。

def pr_values(cm):
    n = cm.shape[0] * cm.shape[1]
    precision = np.zeros((n, n))
    recall = np.zeros((n, n))
    tp = np.diag(cm)
    fp = np.sum(cm, axis=0) tp
    fn = np.sum(cm, axis=1) tp
    for i in range(n):
        for j in range(n):
            if i == j:
                precision[i][j] = (tp[i] + tp[j]) / (tp[i] + fp[i] + fn[j]) if (tp[i] + tp[j]) > 0 else 0.5
                recall[i][j] = tp[i] / (tp[i] + fn[j]) if (tp[i] + fn[j]) > 0 else 0.5
            elif i < j:
                precision[i][j] = precision[j][i] = (tp[j] + tp[i]) / (tp[j] + fp[j] + fn[i]) if (tp[j] + tp[i]) > 0 else 0.5
                recall[i][j] = recall[j][i] = (tp[j] + tp[i]) / (tp[j] + fn[i]) if (tp[j] + fn[i]) > 0 else 0.5
            else:
                continue
    idxs = np.argsort(recall[:, ::-1], axis=1)[:, ::-1].flatten()
    max_idx = np.argmax(precision) if precision.any() else None
    max_recall = recall[idxs, max_idx] if max_idx is not None else None
    max_precision = precision[idxs, max_idx] if max_idx is not None else None
    max_fscore = max_precision * max_recall if max_precision and max_recall else None
    max_idxes = [np.unravel_index(idxs == i, recall.shape) for i in range(len(idxs)) if i != max_idx] if max_idx is not None else []
    max_pr = [(precision[r], recall[r], fscore) for r in max_idxes] if max_idxes else []
    return max_pr, max_recall, max_precision, max_fscore, max_idxes, cm[:, ::-1].T @ cm[:, ::-1].T == np.eye(2) * n

本文来自投稿,不代表科技代码立场,如若转载,请注明出处https://www.cwhello.com/471226.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
硬件大师硬件大师订阅用户
上一篇 12小时前
下一篇 12小时前

相关推荐

  • 聊聊Kubernetes自动缩放是什么「kubernetes 自动伸缩」。

    Kubernetes自动缩放是Kubernetes中的一项功能,它可以根据应用程序的需求动态地调整Pod的副本数量,通过自动缩放,可以确保应用程序始终具有足够的资源来处理请求,同时避免资源浪费。 在Kubernetes中,一个应用程…

    2024年6月13日
    00
  • 说说Nagios如何触发告警。

    Nagios是一款强大的网络监控工具,它可以帮助我们实时监控系统、网络设备、应用程序等的状态,当系统或设备出现异常时,Nagios可以触发告警,通知相关人员进行处理,下面将详细介绍如何在Nagios中触发告警。 (图片…

    2024年6月26日
    00
  • 小编教你python+opencv实现阈值分割。

    阈值分割是图像处理中的一种基本技术,它通过将图像像素值与一个或多个阈值进行比较,将图像分割成几个部分,在Python中,我们可以使用OpenCV库来实现阈值分割。 阈值分割的原理 阈值分割是一种基于区域的图像分割…

    2024年7月18日
    00
  • 经验分享显卡温度多少会自动关机重启。

    显卡作为电脑中的重要硬件之一,其稳定性和性能对于整个系统的运行至关重要,在高强度工作或游戏过程中,显卡的温度可能会迅速升高,如果温度超出安全范围,为了保护硬件不受到损坏,系统会自动进行关机或者重启,…

    2024年6月14日
    00

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息