code: def brier_score_loss(y_true, y_prob):
      
      y_true = column_or_1d(y_true)
      y_prob = column_or_1d(y_prob)
      return np.mean((y_true - y_prob) ** 2)
docs: Compute the Brier score
  
      The smaller the Brier score, the better, hence the naming with "loss".
  
      Across all items in a set N predictions, the Brier score measures the
      mean squared difference between (1) the predicted probability assigned
      to the possible outcomes for item i, and (2) the actual outcome.
      Therefore, the lower the Brier score is for a set of predictions, the
      better the predictions are calibrated. Note that the Brier score always
      takes on a value between zero and one, since this is the largest
      possible difference between a predicted probability (which must be
      between zero and one) and the actual outcome (which can take on values
      of only 0 and 1).
  
      The Brier score is appropriate for binary and categorical outcomes that
      can be structured as true or false, but is inappropriate for ordinal
      variables which can take on three or more values (this is because the
      Brier score assumes that all possible outcomes are equivalently
      "distant" from one another).
  
      Parameters
      ----------
      y_true : array, shape (n_samples,)
      True targets.
  
      y_prob : array, shape (n_samples,)
      Probabilities of the positive class.
  
      Returns
      -------
      score : float
      Brier score
  
      Examples
      --------
      >>> import numpy as np
      >>> from costcla.metrics import brier_score_loss
      >>> y_true = [0, 1, 1, 0]
      >>> y_prob = [0.1, 0.9, 0.8, 0.3]
      >>> brier_score_loss(y_true, y_prob) # doctest: +ELLIPSIS
      0.037...
      >>> brier_score_loss(y_true, np.array(y_prob) > 0.5)
      0.0
  
      References
      ----------
      http://en.wikipedia.org/wiki/Brier_score