У меня есть массив:
array([1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
, для которого я пытаюсь получить энтропию.
Код - это то, что я имею ниже. Этот массив взят из первых 20 строк столбца df. Ниже приведен код, который у меня есть. Вывод, который я ищу:
0.60984030471640038
, но я получаю
0.4689955935892812.
Может кто-нибудь помочь?
import numpy as np
from math import log, e
from scipy.stats import entropy
def find_H(df,column, base=2):
vc = df[column].value_counts(normalize=True, sort=False)
base = e if base is None else base
return -(vc * np.log(vc)/np.log(base)).sum()
find_H(cer.iloc[:20],'ratingID')