parameters: (hist_true_acc, hist_false_acc, nbins)
return_statement: return math_ops.add(first_trap, math_ops.reduce_sum(other_traps), name='auc')
docstring: Convert histograms to auc.
  
    Args:
      hist_true_acc:  `Tensor` holding accumulated histogram of scores for records
        that were `True`.
      hist_false_acc:  `Tensor` holding accumulated histogram of scores for
        records that were `False`.
      nbins:  Integer number of bins in the histograms.
  
    Returns:
      Scalar `Tensor` estimating AUC.
docstring_summary: Convert histograms to auc.
docstring_tokens: Convert histograms to auc .
function: def _auc_convert_hist_to_auc(hist_true_acc, hist_false_acc, nbins):
    """Convert histograms to auc.
  
    Args:
      hist_true_acc:  `Tensor` holding accumulated histogram of scores for records
        that were `True`.
      hist_false_acc:  `Tensor` holding accumulated histogram of scores for
        records that were `False`.
      nbins:  Integer number of bins in the histograms.
  
    Returns:
      Scalar `Tensor` estimating AUC.
    """
    # Note that this follows the "Approximating AUC" section in:
    # Efficient AUC learning curve calculation, R. R. Bouckaert,
    # AI'06 Proceedings of the 19th Australian joint conference on Artificial
    # Intelligence: advances in Artificial Intelligence
    # Pages 181-191.
    # Note that the above paper has an error, and we need to re-order our bins to
    # go from high to low score.
  
    # Normalize histogram so we get fraction in each bin.
    normed_hist_true = math_ops.truediv(hist_true_acc,
                                        math_ops.reduce_sum(hist_true_acc))
    normed_hist_false = math_ops.truediv(hist_false_acc,
                                         math_ops.reduce_sum(hist_false_acc))
  
    # These become delta x, delta y from the paper.
    delta_y_t = array_ops.reverse_v2(normed_hist_true, [0], name='delta_y_t')
    delta_x_t = array_ops.reverse_v2(normed_hist_false, [0], name='delta_x_t')
  
    # strict_1d_cumsum requires float32 args.
    delta_y_t = math_ops.cast(delta_y_t, dtypes.float32)
    delta_x_t = math_ops.cast(delta_x_t, dtypes.float32)
  
    # Trapezoidal integration, \int_0^1 0.5 * (y_t + y_{t-1}) dx_t
    y_t = _strict_1d_cumsum(delta_y_t, nbins)
    first_trap = delta_x_t[0] * y_t[0] / 2.0
    other_traps = delta_x_t[1:] * (y_t[1:] + y_t[:nbins - 1]) / 2.0
    return math_ops.add(first_trap, math_ops.reduce_sum(other_traps), name='auc')
function_tokens: def _auc_convert_hist_to_auc ( hist_true_acc , hist_false_acc , nbins ) : # Note that this follows the "Approximating AUC" section in: # Efficient AUC learning curve calculation, R. R. Bouckaert, # AI'06 Proceedings of the 19th Australian joint conference on Artificial # Intelligence: advances in Artificial Intelligence # Pages 181-191. # Note that the above paper has an error, and we need to re-order our bins to # go from high to low score. # Normalize histogram so we get fraction in each bin. normed_hist_true = math_ops . truediv ( hist_true_acc , math_ops . reduce_sum ( hist_true_acc ) ) normed_hist_false = math_ops . truediv ( hist_false_acc , math_ops . reduce_sum ( hist_false_acc ) ) # These become delta x, delta y from the paper. delta_y_t = array_ops . reverse_v2 ( normed_hist_true , [ 0 ] , name = 'delta_y_t' ) delta_x_t = array_ops . reverse_v2 ( normed_hist_false , [ 0 ] , name = 'delta_x_t' ) # strict_1d_cumsum requires float32 args. delta_y_t = math_ops . cast ( delta_y_t , dtypes . float32 ) delta_x_t = math_ops . cast ( delta_x_t , dtypes . float32 ) # Trapezoidal integration, \int_0^1 0.5 * (y_t + y_{t-1}) dx_t y_t = _strict_1d_cumsum ( delta_y_t , nbins ) first_trap = delta_x_t [ 0 ] * y_t [ 0 ] / 2.0 other_traps = delta_x_t [ 1 : ] * ( y_t [ 1 : ] + y_t [ : nbins - 1 ] ) / 2.0 return math_ops . add ( first_trap , math_ops . reduce_sum ( other_traps ) , name = 'auc' )