'Yields 0.0 if the trained classes are evenly distributed.
Yields > +1.0 or < -1.0 if the training data is highly skewed.'

@property
def skewness(self):

    def moment(a, m, k=1):
        return (sum([((x - m) ** k) for x in a]) / (len(a) or 1))
    a = list(chain(*(([i] * v) for (i, (k, v)) in enumerate(self._classes.items()))))
    m = (float(sum(a)) / len(a))
    return (moment(a, m, 3) / ((moment(a, m, 2) ** 1.5) or 1))
