parameters: (y_true, y_score, pos_label=None, sample_weight=None)
return_statement: return fps, tps, y_score[threshold_idxs]
docstring: Calculate true and false positives per binary classification threshold.
  
      Parameters
      ----------
      y_true : array, shape = [n_samples]
          True targets of binary classification
  
      y_score : array, shape = [n_samples]
          Estimated probabilities or decision function
  
      pos_label : int or str, default=None
          The label of the positive class
  
      sample_weight : array-like of shape (n_samples,), default=None
          Sample weights.
  
      Returns
      -------
      fps : array, shape = [n_thresholds]
          A count of false positives, at index i being the number of negative
          samples assigned a score >= thresholds[i]. The total number of
          negative samples is equal to fps[-1] (thus true negatives are given by
          fps[-1] - fps).
  
      tps : array, shape = [n_thresholds <= len(np.unique(y_score))]
          An increasing count of true positives, at index i being the number
          of positive samples assigned a score >= thresholds[i]. The total
          number of positive samples is equal to tps[-1] (thus false negatives
          are given by tps[-1] - tps).
  
      thresholds : array, shape = [n_thresholds]
          Decreasing score values.
docstring_summary: Calculate true and false positives per binary classification threshold.
docstring_tokens: Calculate true and false positives per binary classification threshold .
function: def _binary_clf_curve(y_true, y_score, pos_label=None, sample_weight=None):
      """Calculate true and false positives per binary classification threshold.
  
      Parameters
      ----------
      y_true : array, shape = [n_samples]
          True targets of binary classification
  
      y_score : array, shape = [n_samples]
          Estimated probabilities or decision function
  
      pos_label : int or str, default=None
          The label of the positive class
  
      sample_weight : array-like of shape (n_samples,), default=None
          Sample weights.
  
      Returns
      -------
      fps : array, shape = [n_thresholds]
          A count of false positives, at index i being the number of negative
          samples assigned a score >= thresholds[i]. The total number of
          negative samples is equal to fps[-1] (thus true negatives are given by
          fps[-1] - fps).
  
      tps : array, shape = [n_thresholds <= len(np.unique(y_score))]
          An increasing count of true positives, at index i being the number
          of positive samples assigned a score >= thresholds[i]. The total
          number of positive samples is equal to tps[-1] (thus false negatives
          are given by tps[-1] - tps).
  
      thresholds : array, shape = [n_thresholds]
          Decreasing score values.
      """
      # Check to make sure y_true is valid
      y_type = type_of_target(y_true)
      if not (y_type == "binary" or
              (y_type == "multiclass" and pos_label is not None)):
          raise ValueError("{0} format is not supported".format(y_type))
  
      check_consistent_length(y_true, y_score, sample_weight)
      y_true = column_or_1d(y_true)
      y_score = column_or_1d(y_score)
      assert_all_finite(y_true)
      assert_all_finite(y_score)
  
      if sample_weight is not None:
          sample_weight = column_or_1d(sample_weight)
  
      # ensure binary classification if pos_label is not specified
      # classes.dtype.kind in ('O', 'U', 'S') is required to avoid
      # triggering a FutureWarning by calling np.array_equal(a, b)
      # when elements in the two arrays are not comparable.
      classes = np.unique(y_true)
      if (pos_label is None and (
              classes.dtype.kind in ('O', 'U', 'S') or
              not (np.array_equal(classes, [0, 1]) or
                   np.array_equal(classes, [-1, 1]) or
                   np.array_equal(classes, [0]) or
                   np.array_equal(classes, [-1]) or
                   np.array_equal(classes, [1])))):
          classes_repr = ", ".join(repr(c) for c in classes)
          raise ValueError("y_true takes value in {{{classes_repr}}} and "
                           "pos_label is not specified: either make y_true "
                           "take value in {{0, 1}} or {{-1, 1}} or "
                           "pass pos_label explicitly.".format(
                               classes_repr=classes_repr))
      elif pos_label is None:
          pos_label = 1.
  
      # make y_true a boolean vector
      y_true = (y_true == pos_label)
  
      # sort scores and corresponding truth values
      desc_score_indices = np.argsort(y_score, kind="mergesort")[::-1]
      y_score = y_score[desc_score_indices]
      y_true = y_true[desc_score_indices]
      if sample_weight is not None:
          weight = sample_weight[desc_score_indices]
      else:
          weight = 1.
  
      # y_score typically has many tied values. Here we extract
      # the indices associated with the distinct values. We also
      # concatenate a value for the end of the curve.
      distinct_value_indices = np.where(np.diff(y_score))[0]
      threshold_idxs = np.r_[distinct_value_indices, y_true.size - 1]
  
      # accumulate the true positives with decreasing threshold
      tps = stable_cumsum(y_true * weight)[threshold_idxs]
      if sample_weight is not None:
          # express fps as a cumsum to ensure fps is increasing even in
          # the presence of floating point errors
          fps = stable_cumsum((1 - y_true) * weight)[threshold_idxs]
      else:
          fps = 1 + threshold_idxs - tps
      return fps, tps, y_score[threshold_idxs]
function_tokens: def _binary_clf_curve ( y_true , y_score , pos_label = None , sample_weight = None ) : # Check to make sure y_true is valid y_type = type_of_target ( y_true ) if not ( y_type == "binary" or ( y_type == "multiclass" and pos_label is not None ) ) : raise ValueError ( "{0} format is not supported" . format ( y_type ) ) check_consistent_length ( y_true , y_score , sample_weight ) y_true = column_or_1d ( y_true ) y_score = column_or_1d ( y_score ) assert_all_finite ( y_true ) assert_all_finite ( y_score ) if sample_weight is not None : sample_weight = column_or_1d ( sample_weight ) # ensure binary classification if pos_label is not specified # classes.dtype.kind in ('O', 'U', 'S') is required to avoid # triggering a FutureWarning by calling np.array_equal(a, b) # when elements in the two arrays are not comparable. classes = np . unique ( y_true ) if ( pos_label is None and ( classes . dtype . kind in ( 'O' , 'U' , 'S' ) or not ( np . array_equal ( classes , [ 0 , 1 ] ) or np . array_equal ( classes , [ - 1 , 1 ] ) or np . array_equal ( classes , [ 0 ] ) or np . array_equal ( classes , [ - 1 ] ) or np . array_equal ( classes , [ 1 ] ) ) ) ) : classes_repr = ", " . join ( repr ( c ) for c in classes ) raise ValueError ( "y_true takes value in {{{classes_repr}}} and " "pos_label is not specified: either make y_true " "take value in {{0, 1}} or {{-1, 1}} or " "pass pos_label explicitly." . format ( classes_repr = classes_repr ) ) elif pos_label is None : pos_label = 1. # make y_true a boolean vector y_true = ( y_true == pos_label ) # sort scores and corresponding truth values desc_score_indices = np . argsort ( y_score , kind = "mergesort" ) [ : : - 1 ] y_score = y_score [ desc_score_indices ] y_true = y_true [ desc_score_indices ] if sample_weight is not None : weight = sample_weight [ desc_score_indices ] else : weight = 1. # y_score typically has many tied values. Here we extract # the indices associated with the distinct values. We also # concatenate a value for the end of the curve. distinct_value_indices = np . where ( np . diff ( y_score ) ) [ 0 ] threshold_idxs = np . r_ [ distinct_value_indices , y_true . size - 1 ] # accumulate the true positives with decreasing threshold tps = stable_cumsum ( y_true * weight ) [ threshold_idxs ] if sample_weight is not None : # express fps as a cumsum to ensure fps is increasing even in # the presence of floating point errors fps = stable_cumsum ( ( 1 - y_true ) * weight ) [ threshold_idxs ] else : fps = 1 + threshold_idxs - tps return fps , tps , y_score [ threshold_idxs ]