新聞中心
什么是PR查詢,掌握PR查詢方法

站在用戶的角度思考問題,與客戶深入溝通,找到河源網(wǎng)站設(shè)計(jì)與河源網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋河源地區(qū)。
1. PR查詢簡(jiǎn)介
PR(Precision-Recall)是一種用于評(píng)估分類模型性能的指標(biāo),主要用于衡量模型在召回率(Recall)和精確度(Precision)之間的平衡,PR查詢是指通過計(jì)算不同閾值下的PR值,來確定最佳閾值的方法,這種方法可以幫助我們找到一個(gè)既能滿足精確度要求,又能達(dá)到較高召回率的閾值。
2. PR查詢方法
PR查詢主要包括以下幾個(gè)步驟:
2.1 準(zhǔn)備數(shù)據(jù)
我們需要準(zhǔn)備一個(gè)包含真實(shí)標(biāo)簽和預(yù)測(cè)標(biāo)簽的數(shù)據(jù)集,數(shù)據(jù)集通常是一個(gè)二維數(shù)組,其中每一行表示一個(gè)樣本,第一列是真實(shí)標(biāo)簽,第二列是預(yù)測(cè)標(biāo)簽。
import numpy as np
data = np.array([
['A', 'B'],
['B', 'A'],
['A', 'A'],
['B', 'B']
])
2.2 計(jì)算混淆矩陣
接下來,我們需要計(jì)算混淆矩陣,混淆矩陣是一個(gè)二維數(shù)組,其中行表示實(shí)際類別,列表示預(yù)測(cè)類別,對(duì)于每個(gè)樣本,我們可以將其真實(shí)標(biāo)簽和預(yù)測(cè)標(biāo)簽填入混淆矩陣中。
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 計(jì)算PR值
有了混淆矩陣后,我們可以計(jì)算PR值,PR值是一個(gè)二維數(shù)組,其中每個(gè)元素表示對(duì)應(yīng)閾值下的PR值,我們可以通過遍歷所有可能的閾值來計(jì)算這些值。
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
標(biāo)題名稱:什么是pr查詢,掌握pr查詢方法
網(wǎng)站地址:http://fisionsoft.com.cn/article/dheposc.html


咨詢
建站咨詢
