-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
from typing import Sequence
def calcular_entropia(seq_a: Sequence, seq_b: Sequence) -> float:
"""Calcular la entropia entre dos listas, o sea, lo desordenada que esté una lista de números.
:param Sequence seq_a: Secuencia a.
:param Sequence seq_b: Secuencia b.
:return: El valor de la entropía (en un rango entre 0.0 y 1.0).
:rtype: float
"""
len_a = len(seq_a)
len_b = len(seq_b)
assert len_a == len_b, 'La longitud de dos listas debe ser igual'
assert len_a, 'La lista no debe estar vacía'
diff = 0
for (x, y) in zip(seq_a, seq_b):
if x != y:
diff += 1
return diff / len_a
assert calcular_entropia([1], [1]) == 0.0
assert calcular_entropia([1, 2, 1, 1, 1], [2, 2, 2, 2, 2]) == 0.8
assert calcular_entropia([1, 1, 1], [2, 2, 2]) == 1.0
assert calcular_entropia([1, 2, 3], [4, 5, 6]) == 1.0
assert calcular_entropia([1, 2, 3], [1, 2, 3]) == 0.0
assert calcular_entropia([1, 1, 8, 8], [1, 1, 1, 1]) == 0.5tanrax
Metadata
Metadata
Assignees
Labels
No labels