Exemple #1
0
def KLscore(
        x,
        z,
        returnQlog=False,
        qlog=None,
        qlogExp=None):  #x are samples (change), z is measure data (unchanged!)

    tree_d = BallTree(x)
    plog = tree_d.kernel_density(xy_grid,
                                 h=.5,
                                 kernel='gaussian',
                                 return_log=True,
                                 rtol=.1)

    computeQlog = (qlog == None)
    if computeQlog:
        tree_m = BallTree(z)
        qlog = tree_m.kernel_density(xy_grid,
                                     h=1,
                                     kernel='gaussian',
                                     return_log=True)
        qlogExp = np.exp(qlog)

    delta_log = (qlog - plog)
    v = (qlogExp * delta_log).sum()
    v -= (np.exp(plog) * delta_log).sum()  #- since we want p * (log(p)-log(q))

    v *= -0.5 * dz2
    #-sign to make it work as a similarity

    if returnQlog:
        return v, qlog
    else:
        return v
def kde_density(x, tree=None, apply_mean=False):
    if tree is None:
        tree = BallTree(x)

    data = tree.get_arrays()[0]
    h = np.std(data) * (4 / 3 / len(data))**(1 / 5
                                             )  # Silverman's Rule of Thumb
    density = tree.kernel_density(x, h)

    if apply_mean:
        return np.mean(density)

    return density
def balltree_kde_density(x):
    tree = BallTree(x)
    h = np.std(x) * (4 / 3 / len(x))**(1 / 5)  # Silverman's Rule of Thumb
    density = tree.kernel_density(x, h)
    return np.mean(density)