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

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

站在用户的角度思考问题,与客户深入沟通,找到河源网站设计与河源网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站制作、成都做网站、企业官网、英文网站、手机端网站、网站推广、域名注册网站空间、企业邮箱。业务覆盖河源地区。

1. PR查询简介

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

2. PR查询方法

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

2.1 准备数据

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

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值,我们可以通过遍历所有可能的阈值来计算这些值。

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

文章题目:什么是pr查询,掌握pr查询方法
当前网址:http://www.shufengxianlan.com/qtweb/news0/226300.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联