def _info_nominal(self, x, y):
""" Info for nominal feature feature_values
:math: p(a)H(a) :math: from
https://en.wikipedia.org/wiki/ID3_algorithm
Parameters
----------
x : np.array of shape [n remaining examples]
containing feature values
y : np.array of shape [n remaining examples]
containing relevent class
Returns
-------
: float
information for remaining examples given feature
"""
info = 0
n = x.shape[0]
items, count = unique(x)
for value, p in zip(items, count):
info += p * self._entropy(y[x == value])
return CalcRecord(CalcRecord.NOM,
info * np.true_divide(1, n),
attribute_counts=count)
评论列表
文章目录