本文整理匯總了Python中sklearn.metrics.precision_recall_curve方法的典型用法代碼示例。如果您正苦於以下問題:Python metrics.precision_recall_curve方法的具體用法?Python metrics.precision_recall_curve怎麽用?Python metrics.precision_recall_curve使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類sklearn.metrics
的用法示例。
在下文中一共展示了metrics.precision_recall_curve方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: save_precision_recall_curve
# 需要導入模塊: from sklearn import metrics [as 別名]
# 或者: from sklearn.metrics import precision_recall_curve [as 別名]
def save_precision_recall_curve(eval_labels, pred_labels, average_precision, smell, config, out_folder, dim, method):
fig = plt.figure()
precision, recall, _ = precision_recall_curve(eval_labels, pred_labels)
step_kwargs = ({'step': 'post'}
if 'step' in signature(plt.fill_between).parameters
else {})
plt.step(recall, precision, color='b', alpha=0.2,
where='post')
plt.fill_between(recall, precision, alpha=0.2, color='b', **step_kwargs)
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.ylim([0.0, 1.05])
plt.xlim([0.0, 1.0])
if isinstance(config, cfg.CNN_config):
title_str = smell + " (" + method + " - " + dim + ") - L=" + str(config.layers) + ", E=" + str(config.epochs) + ", F=" + str(config.filters) + \
", K=" + str(config.kernel) + ", PW=" + str(config.pooling_window) + ", AP={0:0.2f}".format(average_precision)
# plt.title(title_str)
# plt.show()
file_name = get_plot_file_name(smell, config, out_folder, dim, method, "_prc_")
fig.savefig(file_name)
示例2: precision_recall_auc
# 需要導入模塊: from sklearn import metrics [as 別名]
# 或者: from sklearn.metrics import precision_recall_curve [as 別名]
def precision_recall_auc(loss_file,reverse,smoothing):
if not os.path.isdir(loss_file):
loss_file_list = [loss_file]
else:
loss_file_list = os.listdir(loss_file)
loss_file_list = [os.path.join(loss_file, sub_loss_file) for sub_loss_file in loss_file_list]
optimal_results = RecordResult()
for sub_loss_file in loss_file_list:
dataset, scores, labels = get_scores_labels(sub_loss_file,reverse,smoothing)
precision, recall, thresholds = metrics.precision_recall_curve(labels, scores, pos_label=0)
auc = metrics.auc(recall, precision)
results = RecordResult(recall, precision, auc, dataset, sub_loss_file)
if optimal_results < results:
optimal_results = results
if os.path.isdir(loss_file):
print(results)
print('##### optimal result and model PR-AUC = {}'.format(optimal_results))
return optimal_results
示例3: __call__
# 需要導入模塊: from sklearn import metrics [as 別名]
# 或者: from sklearn.metrics import precision_recall_curve [as 別名]
def __call__(self, pos_triples, neg_triples=None):
triples = pos_triples + neg_triples
labels = [1 for _ in range(len(pos_triples))] + [0 for _ in range(len(neg_triples))]
Xr, Xe = [], []
for (s_idx, p_idx, o_idx), label in zip(triples, labels):
Xr += [[p_idx]]
Xe += [[s_idx, o_idx]]
ascores = self.scoring_function([Xr, Xe])
ays = np.array(labels)
if self.rescale_predictions:
diffs = np.diff(np.sort(ascores))
min_diff = min(abs(diffs[np.nonzero(diffs)]))
if min_diff < 1e-8:
ascores = (ascores * (1e-7 / min_diff)).astype(np.float64)
aucroc_value = metrics.roc_auc_score(ays, ascores)
precision, recall, thresholds = metrics.precision_recall_curve(ays, ascores, pos_label=1)
aucpr_value = metrics.auc(recall, precision)
return aucroc_value, aucpr_value
示例4: threshold_by_f1
# 需要導入模塊: from sklearn import metrics [as 別名]
# 或者: from sklearn.metrics import precision_recall_curve [as 別名]
def threshold_by_f1(true_vessels, generated, masks, flatten=True, f1_score=False):
vessels_in_mask, generated_in_mask = pixel_values_in_mask(true_vessels, generated, masks)
precision, recall, thresholds = precision_recall_curve(vessels_in_mask.flatten(), generated_in_mask.flatten(), pos_label=1)
best_f1,best_threshold=best_f1_threshold(precision, recall, thresholds)
pred_vessels_bin=np.zeros(generated.shape)
pred_vessels_bin[generated>=best_threshold]=1
if flatten:
if f1_score:
return pred_vessels_bin[masks==1].flatten(), best_f1
else:
return pred_vessels_bin[masks==1].flatten()
else:
if f1_score:
return pred_vessels_bin, best_f1
else:
return pred_vessels_bin
示例5: _average_precision_slow
# 需要導入模塊: from sklearn import metrics [as 別名]
# 或者: from sklearn.metrics import precision_recall_curve [as 別名]
def _average_precision_slow(y_true, y_score):
"""A second alternative implementation of average precision that closely
follows the Wikipedia article's definition (see References). This should
give identical results as `average_precision_score` for all inputs.
References
----------
.. [1] `Wikipedia entry for the Average precision
<https://en.wikipedia.org/wiki/Average_precision>`_
"""
precision, recall, threshold = precision_recall_curve(y_true, y_score)
precision = list(reversed(precision))
recall = list(reversed(recall))
average_precision = 0
for i in range(1, len(precision)):
average_precision += precision[i] * (recall[i] - recall[i - 1])
return average_precision
示例6: test_precision_recall_curve
# 需要導入模塊: from sklearn import metrics [as 別名]
# 或者: from sklearn.metrics import precision_recall_curve [as 別名]
def test_precision_recall_curve():
y_true, _, probas_pred = make_prediction(binary=True)
_test_precision_recall_curve(y_true, probas_pred)
# Use {-1, 1} for labels; make sure original labels aren't modified
y_true[np.where(y_true == 0)] = -1
y_true_copy = y_true.copy()
_test_precision_recall_curve(y_true, probas_pred)
assert_array_equal(y_true_copy, y_true)
labels = [1, 0, 0, 1]
predict_probas = [1, 2, 3, 4]
p, r, t = precision_recall_curve(labels, predict_probas)
assert_array_almost_equal(p, np.array([0.5, 0.33333333, 0.5, 1., 1.]))
assert_array_almost_equal(r, np.array([1., 0.5, 0.5, 0.5, 0.]))
assert_array_almost_equal(t, np.array([1, 2, 3, 4]))
assert_equal(p.size, r.size)
assert_equal(p.size, t.size + 1)
示例7: _test_precision_recall_curve
# 需要導入模塊: from sklearn import metrics [as 別名]
# 或者: from sklearn.metrics import precision_recall_curve [as 別名]
def _test_precision_recall_curve(y_true, probas_pred):
# Test Precision-Recall and aread under PR curve
p, r, thresholds = precision_recall_curve(y_true, probas_pred)
precision_recall_auc = _average_precision_slow(y_true, probas_pred)
assert_array_almost_equal(precision_recall_auc, 0.859, 3)
assert_array_almost_equal(precision_recall_auc,
average_precision_score(y_true, probas_pred))
assert_almost_equal(_average_precision(y_true, probas_pred),
precision_recall_auc, decimal=3)
assert_equal(p.size, r.size)
assert_equal(p.size, thresholds.size + 1)
# Smoke test in the case of proba having only one value
p, r, thresholds = precision_recall_curve(y_true,
np.zeros_like(probas_pred))
assert_equal(p.size, r.size)
assert_equal(p.size, thresholds.size + 1)
示例8: eval
# 需要導入模塊: from sklearn import metrics [as 別名]
# 或者: from sklearn.metrics import precision_recall_curve [as 別名]
def eval(model, test_data, test_label, thresholds=0.5, num_classes=2, pr_figure_path=None, pred_save_path=None):
print('{0}, val mean acc:{1}'.format(model.__str__(), model.score(test_data, test_label)))
if num_classes == 2:
# binary classification
label_pred_probas = model.predict_proba(test_data)[:, 1]
label_pred = label_pred_probas > thresholds
precision, recall, threshold = precision_recall_curve(test_label, label_pred)
plot_pr(thresholds, precision, recall, figure_path=pr_figure_path)
else:
# multi
label_pred = model.predict(test_data)
# precision_recall_curve: multiclass format is not supported
print(classification_report(test_label, label_pred))
if pred_save_path:
with open(pred_save_path, 'w', encoding='utf-8') as f:
for i in label_pred:
f.write(str(i) + '\n')
return label_pred
示例9: compute_fdr
# 需要導入模塊: from sklearn import metrics [as 別名]
# 或者: from sklearn.metrics import precision_recall_curve [as 別名]
def compute_fdr(all_targets,all_predictions, fdr_cutoff=0.5):
fdr_array = []
for i in range(all_targets.shape[1]):
try:
precision, recall, thresholds = metrics.precision_recall_curve(all_targets[:,i], all_predictions[:,i],pos_label=1)
fdr = 1- precision
cutoff_index = next(i for i, x in enumerate(fdr) if x <= fdr_cutoff)
fdr_at_cutoff = recall[cutoff_index]
if not math.isnan(fdr_at_cutoff):
fdr_array.append(numpy.nan_to_num(fdr_at_cutoff))
except:
pass
fdr_array = numpy.array(fdr_array)
mean_fdr = numpy.mean(fdr_array)
median_fdr = numpy.median(fdr_array)
var_fdr = numpy.var(fdr_array)
return mean_fdr,median_fdr,var_fdr,fdr_array
示例10: compute_aupr
# 需要導入模塊: from sklearn import metrics [as 別名]
# 或者: from sklearn.metrics import precision_recall_curve [as 別名]
def compute_aupr(all_targets,all_predictions):
aupr_array = []
for i in range(all_targets.shape[1]):
try:
precision, recall, thresholds = metrics.precision_recall_curve(all_targets[:,i], all_predictions[:,i], pos_label=1)
auPR = metrics.auc(recall,precision,reorder=True)
if not math.isnan(auPR):
aupr_array.append(numpy.nan_to_num(auPR))
except:
pass
aupr_array = numpy.array(aupr_array)
mean_aupr = numpy.mean(aupr_array)
median_aupr = numpy.median(aupr_array)
var_aupr = numpy.var(aupr_array)
return mean_aupr,median_aupr,var_aupr,aupr_array
示例11: eval_intentPredict
# 需要導入模塊: from sklearn import metrics [as 別名]
# 或者: from sklearn.metrics import precision_recall_curve [as 別名]
def eval_intentPredict(intent_probs, intent_trueLabel):
''' Inputs:
intent_probs: shape = (sample_nb, intent_vocab_size), predicted probs for intent prediction
intent_trueLabel: shape = (sample_nb, intent_vocab_size), target binary matrix
Output:
precision, recall, f1_score, and threshold (prob >= threshold)
frame level accuracy
'''
# exclude the last element in precision and recall
# which denotes 0 recall, and 1 precision
precision, recall, thresholds = precision_recall_curve(
intent_trueLabel.ravel(), intent_probs.ravel(), pos_label=1)
f1_score = 2. * precision * recall / (precision + recall)
f1_score[np.isnan(f1_score)] = 0.
max_idx = np.argmax(f1_score[:-1])
indicator = np.zeros_like(intent_probs)
indicator[intent_probs >= thresholds[max_idx]] = 1
accuracy_frame = calculate_FrameAccuracy(indicator, intent_trueLabel)
return (precision[max_idx], recall[max_idx], f1_score[max_idx], accuracy_frame, thresholds[max_idx])
示例12: _update_onco_metrics
# 需要導入模塊: from sklearn import metrics [as 別名]
# 或者: from sklearn.metrics import precision_recall_curve [as 別名]
def _update_onco_metrics(self, y_true, y_pred, prob):
self.onco_gene_pred = pd.Series(y_pred, self.y.index)
self.onco_gene_score = pd.Series(prob, self.y.index)
# compute metrics for classification
self.onco_gene_count[self.num_pred] = sum(y_pred)
prec, recall, fscore, support = metrics.precision_recall_fscore_support(y_true, y_pred)
self.onco_precision[self.num_pred] = prec[self.onco_num]
self.onco_recall[self.num_pred] = recall[self.onco_num]
self.onco_f1_score[self.num_pred] = fscore[self.onco_num]
self.logger.debug('Onco Iter %d: Precission=%s, Recall=%s, f1_score=%s' % (
self.num_pred + 1, str(prec), str(recall), str(fscore)))
# compute ROC curve metrics
fpr, tpr, thresholds = metrics.roc_curve(y_true, prob)
self.onco_tpr_array[self.num_pred, :] = interp(self.onco_fpr_array, fpr, tpr)
#self.onco_mean_tpr[0] = 0.0
# compute Precision-Recall curve metrics
p, r, thresh = metrics.precision_recall_curve(y_true, prob)
p, r, thresh = p[::-1], r[::-1], thresh[::-1] # reverse order of results
thresh = np.insert(thresh, 0, 1.0)
self.onco_precision_array[self.num_pred, :] = interp(self.onco_recall_array, r, p)
self.onco_threshold_array[self.num_pred, :] = interp(self.onco_recall_array, r, thresh)
示例13: _update_tsg_metrics
# 需要導入模塊: from sklearn import metrics [as 別名]
# 或者: from sklearn.metrics import precision_recall_curve [as 別名]
def _update_tsg_metrics(self, y_true, y_pred, prob):
self.tsg_gene_pred = pd.Series(y_pred, self.y.index)
self.tsg_gene_score = pd.Series(prob, self.y.index)
# compute metrics for classification
self.tsg_gene_count[self.num_pred] = sum(y_pred)
prec, recall, fscore, support = metrics.precision_recall_fscore_support(y_true, y_pred)
tsg_col = 1 # column for metrics relate to tsg
self.tsg_precision[self.num_pred] = prec[tsg_col]
self.tsg_recall[self.num_pred] = recall[tsg_col]
self.tsg_f1_score[self.num_pred] = fscore[tsg_col]
self.logger.debug('Tsg Iter %d: Precission=%s, Recall=%s, f1_score=%s' % (
self.num_pred + 1, str(prec), str(recall), str(fscore)))
# compute ROC curve metrics
fpr, tpr, thresholds = metrics.roc_curve(y_true, prob)
self.tsg_tpr_array[self.num_pred, :] = interp(self.tsg_fpr_array, fpr, tpr)
#self.tsg_tpr_array[0] = 0.0
# compute Precision-Recall curve metrics
p, r, thresh = metrics.precision_recall_curve(y_true, prob)
p, r, thresh = p[::-1], r[::-1], thresh[::-1] # reverse order of results
self.tsg_precision_array[self.num_pred, :] = interp(self.tsg_recall_array, r, p)
示例14: plot_PR_curve
# 需要導入模塊: from sklearn import metrics [as 別名]
# 或者: from sklearn.metrics import precision_recall_curve [as 別名]
def plot_PR_curve(classifier):
precision, recall, thresholds = precision_recall_curve(DataPrep.test_news['Label'], classifier)
average_precision = average_precision_score(DataPrep.test_news['Label'], classifier)
plt.step(recall, precision, color='b', alpha=0.2,
where='post')
plt.fill_between(recall, precision, step='post', alpha=0.2,
color='b')
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.ylim([0.0, 1.05])
plt.xlim([0.0, 1.0])
plt.title('2-class Random Forest Precision-Recall curve: AP={0:0.2f}'.format(
average_precision))
示例15: prc_auc_score
# 需要導入模塊: from sklearn import metrics [as 別名]
# 或者: from sklearn.metrics import precision_recall_curve [as 別名]
def prc_auc_score(self, y_total, t_total):
# --- ignore labels if specified ---
if self.ignore_labels:
valid_ind = numpy.in1d(t_total, self.ignore_labels, invert=True)
y_total = y_total[valid_ind]
t_total = t_total[valid_ind]
# --- set positive labels to 1, negative labels to 0 ---
pos_indices = numpy.in1d(t_total, self.pos_labels)
t_total = numpy.where(pos_indices, 1, 0)
if len(numpy.unique(t_total)) != 2:
if self.raise_value_error:
raise ValueError("Only one class present in y_true. PRC AUC "
"score is not defined in that case.")
else:
return numpy.nan
precision, recall, _ = metrics.precision_recall_curve(t_total, y_total)
prc_auc = metrics.auc(recall, precision)
return prc_auc