csv_types.Sym
1import math 2from src.csv_types.Obj import Obj 3 4 5class Sym(Obj): 6 7 def __init__(self, column_position=0, column_name=""): 8 super().__init__("Sym") 9 self.n = 0 # items seen 10 self.at = column_position # column position 11 self.name = column_name # column name 12 self._has = {} # kept data 13 14 def add(self, v): 15 if v != "?": 16 self.n += 1 17 self._has[v] = 1 + self._has[v] if v in self._has else 1 18 19 def mid(self): 20 most = -1 21 for k in self._has: 22 if self._has[k] > most: 23 mode, most = k, self._has[k] 24 return mode 25 26 def div(self): 27 def fun(p): 28 return p * math.log2(p) 29 30 e = 0 31 for x in self._has.values(): 32 if x > 0: 33 e = e - fun(x / self.n) 34 return e
class
Sym(src.csv_types.Obj.Obj):
6class Sym(Obj): 7 8 def __init__(self, column_position=0, column_name=""): 9 super().__init__("Sym") 10 self.n = 0 # items seen 11 self.at = column_position # column position 12 self.name = column_name # column name 13 self._has = {} # kept data 14 15 def add(self, v): 16 if v != "?": 17 self.n += 1 18 self._has[v] = 1 + self._has[v] if v in self._has else 1 19 20 def mid(self): 21 most = -1 22 for k in self._has: 23 if self._has[k] > most: 24 mode, most = k, self._has[k] 25 return mode 26 27 def div(self): 28 def fun(p): 29 return p * math.log2(p) 30 31 e = 0 32 for x in self._has.values(): 33 if x > 0: 34 e = e - fun(x / self.n) 35 return e