code: def vote_entropy(
      committee: BaseCommittee, X: modALinput, **predict_proba_kwargs
  ) -> np.ndarray:
      """
      Calculates the vote entropy for the Committee. First it computes the predictions of X for each learner in the
      Committee, then calculates the probability distribution of the votes. The entropy of this distribution is the vote
      entropy of the Committee, which is returned.
  
      Args:
          committee: The :class:`modAL.models.BaseCommittee` instance for which the vote entropy is to be calculated.
          X: The data for which the vote entropy is to be calculated.
          **predict_proba_kwargs: Keyword arguments for the :meth:`predict_proba` of the Committee.
  
      Returns:
          Vote entropy of the Committee for the samples in X.
      """
      n_learners = len(committee)
      try:
          votes = committee.vote(X, **predict_proba_kwargs)
      except NotFittedError:
          return np.zeros(shape=(X.shape[0],))
  
      p_vote = np.zeros(shape=(X.shape[0], len(committee.classes_)))
  
      for vote_idx, vote in enumerate(votes):
          vote_counter = Counter(vote)
  
          for class_idx, class_label in enumerate(committee.classes_):
              p_vote[vote_idx, class_idx] = (
                  vote_counter[class_label] / n_learners
              )
  
      entr = entropy(p_vote, axis=1)
      return entr
  
file_path: modAL/modAL/disagreement.py
imports: from collections import Counter
  import numpy
  from scipy.stats import entropy
  from sklearn.base import BaseEstimator
  from sklearn.exceptions import NotFittedError
  from modAL.models.base import BaseCommittee
  from modAL.utils.data import modALinput
  from modAL.utils.selection import multi_argmax, shuffled_argmax
label_desc: Use image node_id 1 for calling a global function with example usage: vote_entropy(committee, X) and returns: entr, np