docstr: Computes the q which maximizes score (q_mle).
  for berk jones this is given to be N_a/N
  :param observed_sum: sum of observed binary outcomes for all i
  :param expectations: predicted outcomes for each data element i
  :param direction: direction not considered
  :return: q MLE
code: def qmle(self, observed_sum: float, expectations: np.array):
      """
      Computes the q which maximizes score (q_mle).
      for berk jones this is given to be N_a/N
      :param observed_sum: sum of observed binary outcomes for all i
      :param expectations: predicted outcomes for each data element i
      :param direction: direction not considered
      :return: q MLE
      """
      alpha = self.alpha
  
      if len(expectations) == 0:
          return 0
      else:
          q = observed_sum / len(expectations)
  
      if q < alpha:
          return alpha
  
      return q
  
file_path: AIF360/aif360/detectors/mdss/ScoringFunctions/BerkJones.py
imports: from aif360.detectors.mdss.ScoringFunctions.ScoringFunction import ScoringFunction
  from aif360.detectors.mdss.ScoringFunctions import optim
  import numpy
label_desc: Use image node_id 3 for calling the BerkJones obj's underlying member method code with example usage: obj.qmle(observed_sum, expectations) and returns: q, int, alpha