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
Sym(column_position=0, column_name='')
 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
def add(self, v):
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
def mid(self):
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
def div(self):
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