code: def ll(actual, predicted):
      
      actual = np.array(actual)
      predicted = np.array(predicted)
      err = np.seterr(all='ignore')
      score = -(actual*np.log(predicted)+(1-actual)*np.log(1-predicted))
      np.seterr(divide=err['divide'], over=err['over'],
                under=err['under'], invalid=err['invalid'])
      if type(score)==np.ndarray:
          score[np.isnan(score)] = 0
      else:
          if np.isnan(score):
              score = 0
      return score
docs: Computes the log likelihood.
  
      This function computes the log likelihood between two numbers,
      or for element between a pair of lists or numpy arrays.
  
      Parameters
      ----------
      actual : int, float, list of numbers, numpy array
               The ground truth value
      predicted : same type as actual
                  The predicted value
  
      Returns
      -------
      score : double or list of doubles
              The log likelihood error between actual and predicted