Example #1
0
def example_random_graph_perspectives(N=100):
    probs = [0.04, 0.05, 0.1, 0.2, 0.5, 1.0]
    nums = [4, 5, 10, 20, 50, 100]
    Ks = [1, 2, 3, 4, 5]
    error = np.empty((len(Ks), len(probs)))
    fig = plt.figure()
    for i in range(len(probs)):
        p = probs[i]
        for j in range(len(Ks)):
            K = Ks[j]
            D = multigraph.binomial(N, p, K=K)
            if K == 1: D = [D]
            persp = perspective.Persp()
            persp.fix_Q(number=K)
            vis = MPSE(D, persp=persp)
            vis.setup_visualization()
            vis.initialize_X()
            vis.initialize_Q()
            vis.optimize_all(min_step=1e-8)
            error[j, i] = max(vis.cost, 1e-6)
    for i in range(len(Ks)):
        plt.semilogy(error[i], label=f'K {Ks[i]}')
    plt.ylabel('MDS stress')
    plt.xlabel('average neighbors')
    plt.xticks(range(len(nums)), nums)
    plt.legend()
    plt.tight_layout
    plt.show()
Example #2
0
def example_random_graph_2(N=100):
    print('\n***mds.example_random_graph()***\n')
    print('Here we explore the MDS embedding for a random binomial graph with'+\
          'different edge probabilities.')
    probs = [0.04, 0.05, 0.1, 0.2, 0.5, 1.0]
    nums = [4, 5, 10, 20, 50, 100]
    dims = [2, 3, 4, 5, 10, 20]
    error = np.empty((len(dims), len(probs)))
    fig = plt.figure()
    for i in range(len(probs)):
        p = probs[i]
        D = multigraph.binomial(N, p)
        for j in range(len(dims)):
            dim = dims[j]
            mds = MDS(D, dim=dim)
            mds.initialize()
            mds.stochastic(max_iters=100, approx=.3, lr=5)
            mds.stochastic(max_iters=100, approx=.6, lr=10)
            mds.stochastic(max_iters=100, approx=.9, lr=15)
            mds.agd(min_step=1e-8)
            error[j, i] = max(mds.cost, 1e-6)
    for i in range(len(dims)):
        plt.semilogy(error[i], label=f'dim {dims[i]}')
    plt.ylabel('MDS stress')
    plt.xlabel('average neighbors')
    plt.xticks(range(len(nums)), nums)
    plt.legend()
    plt.tight_layout
    plt.show()
Example #3
0
def example_binomial(N=100, K=2):
    for p in [0.05, 0.1, 0.5, 1.0]:
        D = multigraph.binomial(N, p, K=K)
        mv = MPSE(D, verbose=1)
        mv.gd(plot=True, verbose=1)
        mv.figureX()
        mv.figureHY(edges=True)
    plt.show()
Example #4
0
def xyz():
    X = np.load('raw/xyz.npy')
    persp = perspective.Persp()
    persp.fix_Q(number=3, special='standard')
    D = multigraph.binomial(N=1000, p=.01, K=3)
    mv = MPSE(D, persp=persp, verbose=1)
    mv.setup_visualization()
    mv.initialize_X(X)
    mv.figureY(plot=True, title='', axis=False)
    plt.show()
Example #5
0
def example_binomial(N=100, K=2):
    persp = perspective.Persp()
    for p in [0.05, 0.1, 0.5, 1.0]:
        D = multigraph.binomial(N, p, K=K)
        mv = MPSE(D, persp=persp, verbose=1)
        mv.setup_visualization(visualization='mds')
        mv.initialize_Q()
        mv.initialize_X()
        mv.optimize_all(agd=True, max_iters=400, min_step=1e-8)
        mv.figureX(plot=True)
        mv.figureHY(edges=True)
    plt.show()
Example #6
0
def example_random_graph(N=100, dim=2):
    print('\n***mds.example_random_graph()***\n')
    print('Here we explore the MDS embedding for a random binomial graph with'+\
          'different edge probabilities.')
    fig, axes = plt.subplots(2, 3)
    #[ax.set_axis_off() for ax in axes.ravel()]
    plt.tight_layout()
    for p, ax in zip([0.01, 0.02, 0.03, 0.05, 0.1, 1.0], axes.ravel()):
        D = multigraph.binomial(N, p)
        mds = MDS(D, dim=dim, verbose=1)
        mds.initialize()
        mds.stochastic(max_iters=100, approx=.6, lr=.5)
        mds.agd(min_step=1e-6)
        mds.figureX(ax=ax, edges=True)
        ax.set_xlabel(f'ave. neighs. : {int(100*p)}')
        ax.set_title(f'stress = {mds.cost:0.2e}')
        ax.set_yticks([])
        ax.set_xticks([])
    plt.show()