code: def _kl_divergence_disagreement(self, proba):
          
          n_students = np.shape(proba)[1]
          consensus = np.mean(proba, axis=1) # shape=(n_samples, n_class)
          # average probability of each class across all students
          consensus = np.tile(consensus, (n_students, 1, 1)).transpose(1, 0, 2)
          kl = np.sum(proba * np.log(proba / consensus), axis=2)
          return np.mean(kl, axis=1)
docs: Calculate the Kullback-Leibler (KL) divergence disaagreement measure.
  
          Parameters
          ----------
          proba : array-like, shape=(n_samples, n_students, n_class)
  
          Returns
          -------
          disagreement : list of float, shape=(n_samples)
              The kl_divergence of the given probability.