'Returns the kernel smoothed prediction at x
If x is a real number then a single value is returned.
Otherwise an attempt is made to cast x to numpy.ndarray and an array of
corresponding y-points is returned.'

def predict(self, x):

    if (np.size(x) == 1):
        return self.Kernel.smooth(self.x, self.y, x)
    else:
        return np.array([self.Kernel.smooth(self.x, self.y, xx) for xx in np.array(x)])
