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()
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()
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()
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()
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()
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()