Creating a threshold-coded ROC plot in Python Creating a threshold-coded ROC plot in Python r r

Creating a threshold-coded ROC plot in Python


Look at this gist:

https://gist.github.com/podshumok/c1d1c9394335d86255b8

roc_data = sklearn.metrics.roc_curve(...)plot_roc(*roc_data, label_every=5)


import sklearn # for the roc curveimport matplotlib.pyplot as pltdef plot_roc(labels, predictions, positive_label, thresholds_every=10, title=''):  # fp: false positive rates. tp: true positive rates  fp, tp, thresholds = sklearn.metrics.roc_curve(labels, predictions, pos_label=positive_label)  roc_auc = sklearn.metrics.auc(fp, tp)  figure(figsize=(16, 16))  plt.plot(fp, tp, label='ROC curve (area = %0.2f)' % roc_auc, linewidth=2, color='darkorange')  plt.plot([0, 1], [0, 1], color='navy', linestyle='--', linewidth=2)  plt.xlabel('False positives rate')  plt.ylabel('True positives rate')  plt.xlim([-0.03, 1.0])  plt.ylim([0.0, 1.03])  plt.title(title)  plt.legend(loc="lower right")  plt.grid(True)  # plot some thresholds  thresholdsLength = len(thresholds)  colorMap=plt.get_cmap('jet', thresholdsLength)  for i in range(0, thresholdsLength, thresholds_every):    threshold_value_with_max_four_decimals = str(thresholds[i])[:5]    plt.text(fp[i] - 0.03, tp[i] + 0.005, threshold_value_with_max_four_decimals, fontdict={'size': 15}, color=colorMap(i/thresholdsLength));  plt.show()

Usage:

labels = [1, 1, 2, 2, 2, 3]predictions = [0.7, 0.99, 0.9, 0.3, 0.7, 0.01] # predictions/accuracy for class 1plot_roc(labels, predictions, positive_label=1, thresholds_every=1, title="ROC Curve - Class 1")

Result:plot result