mirror of
https://github.com/creyD/entro.py.git
synced 2026-04-12 12:00:28 +02:00
Added max entropy calculator
This commit is contained in:
@@ -4,38 +4,36 @@ import math
|
|||||||
# Calculates the entropy of a given string
|
# Calculates the entropy of a given string
|
||||||
# Returns the entropy and an alphabet with the calculated probabilities
|
# Returns the entropy and an alphabet with the calculated probabilities
|
||||||
def calculateEntropy(input_string):
|
def calculateEntropy(input_string):
|
||||||
alphabet, alphabet_size, entropy = {}, 0, 0
|
alphabet, alphabet_size, entropy = {}, len(input_string), 0
|
||||||
|
|
||||||
for char in input_string:
|
for char in input_string:
|
||||||
if char in alphabet:
|
if char in alphabet:
|
||||||
alphabet[char] += 1
|
alphabet[char] += 1
|
||||||
else:
|
else:
|
||||||
alphabet[char] = 1
|
alphabet[char] = 1
|
||||||
alphabet_size += 1
|
|
||||||
|
|
||||||
for char in alphabet:
|
for char in alphabet:
|
||||||
alphabet[char] = alphabet[char] / alphabet_size
|
alphabet[char] = alphabet[char] / alphabet_size
|
||||||
entropy -= alphabet[char] * math.log(alphabet[char], 2)
|
entropy -= alphabet[char] * math.log(alphabet[char], 2)
|
||||||
|
|
||||||
return entropy, alphabet
|
max_entropy = - len(alphabet) * (1 / len(alphabet) * math.log(1 / len(alphabet), 2))
|
||||||
|
return entropy, alphabet, max_entropy
|
||||||
|
|
||||||
|
|
||||||
# Calculates the entropy of a given string
|
# Calculates the entropy of a given string
|
||||||
# Returns only the entropy in bits as this is the minimal function
|
# Returns only the entropy in bits as this is the minimal function
|
||||||
def calculateEntropyMin(input_string):
|
def calculateEntropyMin(input_string):
|
||||||
alphabet, alphabet_size, entropy = {}, 0, 0
|
alphabet, alphabet_size, entropy = {}, len(input_string), 0
|
||||||
|
|
||||||
for char in input_string:
|
for char in input_string:
|
||||||
if char in alphabet:
|
if char in alphabet:
|
||||||
alphabet[char] += 1
|
alphabet[char] += 1
|
||||||
else:
|
else:
|
||||||
alphabet[char] = 1
|
alphabet[char] = 1
|
||||||
alphabet_size += 1
|
|
||||||
|
|
||||||
for char in alphabet:
|
for char in alphabet:
|
||||||
i = alphabet[char] / alphabet_size
|
i = alphabet[char] / alphabet_size
|
||||||
entropy -= i * math.log(i, 2)
|
entropy -= i * math.log(i, 2)
|
||||||
|
|
||||||
return entropy
|
return entropy
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user