Esempio n. 1
0
    def reduce_data(self, mode=1, plot=True):

        print "Reducing data..."

        K = 500
        X = self.D[:, :self.state_dim]

        # Normalize
        # x_max_X = np.max(X, axis=0)
        # x_min_X = np.min(X, axis=0)
        # for i in range(self.state_action_dim):
        #     X[:,i] = (X[:,i]-x_min_X[i])/(x_max_X[i]-x_min_X[i])

        kdt = KDTree(X, leaf_size=20, metric='euclidean')
        df = DiffusionMap(sigma=1, embedding_dim=2, k=K)

        Xreduced = []
        for i in range(X.shape[0]):
            if not (i % 100):
                print i, X.shape[0]

            idx = kdt.query(X[i, :].reshape(1, -1), k=K, return_distance=False)
            X_nn = X[idx, :].reshape(K, self.state_dim)

            V, _ = df.fit_transform(X_nn, density_normalize=False)
            Xreduced.append(V[0, :])

        Xreduced = np.array(Xreduced)

        if plot:
            plt.scatter(Xreduced[:, 0], Xreduced[:, 1])
            plt.show()

        return Xreduced
Esempio n. 2
0
def test_DiffusionMap_fit_transform_eigenvalue_ordering(mixtureNormals):
    "must return the largest first"
    X = mixtureNormals

    embDim = 2
    df = DiffusionMap(sigma=1, embedding_dim=embDim)
    X_embed, lam = df.fit_transform(X)
    assert (lam[0] > lam[1])
def test_DiffusionMap_fit_transform_eigenvalue_ordering(mixtureNormals):
    "must return the largest first"
    X = mixtureNormals

    embDim = 2
    df = DiffusionMap(sigma=1, embedding_dim=embDim)
    X_embed, lam = df.fit_transform(X)
    assert lam[0] > lam[1]
def test_DiffusionMap_fit_transform_output_dimensions(mixtureNormals):
    X = mixtureNormals

    embDim = 2
    df = DiffusionMap(sigma=1, embedding_dim=embDim)
    X_embed, lam = df.fit_transform(X)

    assert X_embed.shape == (X.shape[0], embDim), "returns wrong dimensionally"
    assert lam.shape[0] == X_embed.shape[1], "must return as many eigenvalues as embedded dimensions"
Esempio n. 5
0
def test_DiffusionMap_fit_transform_output_dimensions(mixtureNormals):
    X = mixtureNormals

    embDim = 2
    df = DiffusionMap(sigma=1, embedding_dim=embDim)
    X_embed, lam = df.fit_transform(X)

    assert X_embed.shape == (X.shape[0], embDim), "returns wrong dimensionally"
    assert lam.shape[0] == X_embed.shape[
        1], "must return as many eigenvalues as embedded dimensions"