Энтропия спектра больше 1

Я пытаюсь рассчитать спектральную энтропию массива следующим образом:

array([0.00000000e+00, 1.00743814e-04, 2.01487627e-04, 2.20497985e+01,
       2.20498993e+01, 2.20500000e+01])

Из этого я получил свой код. однако я обнаружил, что мои данные были плавающими, поэтому я также адаптировал код из здесь, чтобы сформулировать следующее:

>>> def ent(data):
...     uniqw, inverse = np.unique(data, return_inverse=True)
...     p_data= np.bincount(inverse)/len(data) # calculates the probabilities
...     ent=entropy(p_data)  # input probabilities to get the entropy
...     return ent

Результат

>>> ent(freqArray)
1.791759469228055

Как мне заставить мою энтропию лежать между 0 и 1


person virupaksha    schedule 22.04.2018    source источник
comment
Как вы думаете, почему энтропия должна быть не больше 1? Энтропия имеет единицы.   -  person Davis Herring    schedule 22.04.2018
comment
Я не совсем уверен, но данные, которые я пытаюсь классифицировать, имеют энтропию от 0 до 1. Я работаю со звуковыми частотами.   -  person virupaksha    schedule 22.04.2018
comment
Вы можете нормализовать до максимальной энтропии (равномерный ввод). Но являются ли ваши входные данные выборками или вероятностями?   -  person Davis Herring    schedule 22.04.2018
comment
Это выборки, а не вероятности   -  person virupaksha    schedule 23.04.2018
comment
Должен ли я разделить их на их сумму?   -  person virupaksha    schedule 23.04.2018
comment
Просто определить энтропию выборок «действительных чисел» (float) сложно, потому что вы не можете легко аппроксимировать распределение вероятностей, как вы можете это делать с дискретными величинами. Вы уверены, что это то, что вы хотите сделать?   -  person Davis Herring    schedule 23.04.2018
comment
Если это выборки, масштабирование ничего не даст (не считая округления). Если это вероятности, конечно, они должны быть нормализованы. Но я имел в виду нормализацию самой энтропии, а не данных вообще.   -  person Davis Herring    schedule 23.04.2018