12

R のROCR パッケージは、曲線に沿ってしきい値を色分けしてラベル付けする ROC 曲線プロットのオプションを提供します。

私がPythonで得ることができる最も近いものは次のようなものです

from sklearn.metrics import roc_curve
fpr, tpr, thresholds = roc_curve(qualityTrain.PoorCare, qualityTrain.Pred1)
plt.plot(fpr, tpr, label='ROC curve', color='b')
plt.axes().set_aspect('equal')
plt.xlim([-0.05, 1.05])
plt.ylim([-0.05, 1.05])

を与える

しきい値をラベル付け ( を使用print.cutoffs.at) し、色分け( を使用)する R の機能と同等の機能を提供するパッケージはありますか? colorizeおそらく、この情報は にありthresholds、 によって返されsklearn.metrics.roc_curveますが、それを使用して図を色分けし、ラベルを付ける方法がわかりません。

4

2 に答える 2

9

この要点を見てください:

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

roc_data = sklearn.metrics.roc_curve(...)
plot_roc(*roc_data, label_every=5)
于 2014-08-11T02:56:46.147 に答える
0
import sklearn # for the roc curve
import matplotlib.pyplot as plt

def 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()

使用法:

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

結果: プロット結果

于 2020-02-24T15:00:07.990 に答える