'Returns a dictionary of (set(features), frequency)-items.
The given support (0.0-1.0) is the relative amount of documents
in which a combination of features must appear.'

def __call__(self, sets=[], support=0.5):

    sets = [set(iterable) for iterable in sets]
    C1 = self.C1(sets)
    L1 = self.Lk(sets, C1, support)
    self._candidates = [L1.keys()]
    self._support = L1
    while True:
        if (len(self._candidates[(-1)]) == 0):
            break
        Ck = self.Ck(self._candidates[(-1)])
        Lk = self.Lk(sets, Ck, support)
        self._candidates.append(Lk.keys())
        self._support.update(Lk)
    return self._support
