La façon la plus rapide pour calculer l'entropie en Python

Dans mon projet j'ai besoin de calculer l'entropie de 0-1 vecteurs de nombreuses fois. Voici mon code:

def entropy(labels):
    """ Computes entropy of 0-1 vector. """
    n_labels = len(labels)

    if n_labels <= 1:
        return 0

    counts = np.bincount(labels)
    probs = counts[np.nonzero(counts)] / n_labels
    n_classes = len(probs)

    if n_classes <= 1:
        return 0
    return - np.sum(probs * np.log(probs)) / np.log(n_classes)

Est-il un moyen plus rapide?

  • Qu'est ce qu'une longueur typique de labels?
  • La longueur n'est pas fixe..
  • Il serait utile pour l'analyse comparative de connaître les valeurs typiques de labels. Si labels est trop court, un pur python de la mise en œuvre pourrait être plus rapide que l'utilisation de NumPy.
InformationsquelleAutor blueSurfer | 2013-03-16