#matrixA = np.loadtxt('./data/jester.txt', dtype=float).T[:4096,:] print(matrixA.shape) U, S, V = np.linalg.svd(matrixA,full_matrices=False) matrixA = np.dot(U[:,:rank]*S[:rank],V[:rank,:]) print('The matrix A has', matrixA.shape[0], 'rows and', matrixA.shape[1], 'columns.') print('rank =',LA.matrix_rank(matrixA)) maxcvalue = math.log10(n)/math.log10(math.log10(n)) print(maxcvalue) cvalues = np.linspace(0.05,maxcvalue, 5) GRHTsketch = [] for c in cvalues: print('c=',c) GRHTerror = [] while for i in range (repeat): GCLASS = GRHT(inputdim, sketchsize) matrixC = GCLASS.Apply(matrixA, applyLeft) GRHTerror.append(get_distortion(matrixA, matrixC)) GRHTsketch.append(np.mean(GRHTerror)) #labelname = 'GHRT_c='+str(c) plt.plot(cvalues, GRHTsketch, label='GRHT') plt.legend() plt.xlabel("sparsity(larger number->dense)") plt.ylabel("distorsion") #plt.title('Comparison of different sketching methods') #fig.savefig("plot.png") plt.show()
for k in range(2, 20, 4): sindex = [] Magicsketch = [] MS_std = [] sketchsize = 30 while sketchsize <= M: print(sketchsize) sindex.append(sketchsize) Magic_error = [] for i in range(repeat): print('repeat =', i) MagicClass = MagicGraph(inputdim, sketchsize) matrixC = MagicClass.Apply(matrixA, applyLeft, num_randmatch=k) Magic_error.append(get_distortion(matrixA, matrixC)) Magicsketch.append(np.mean(Magic_error)) MS_std.append(np.std(Magic_error)) sketchsize += increment plt.plot(sindex, Magicsketch, label='_k=' + str(k)) plt.legend() plt.xlabel("sketching size s", fontsize=15) plt.ylabel( r'$||(A^TA)^{\dagger/2}\tilde{A}^T\tilde{A}(A^TA)^{\dagger/2}-P_{A^TA}||_2$', fontsize=15) #plt.ylabel(r'$\frac{||SAx||_2-||Ax||_2}{||Ax||_2}$',fontsize=15) plt.title('MagicGraph SKETCHING on A with size ' + str(m) + ' by ' + str(n) +
increment = 40 while sketchsize <= M: print(sketchsize) sindex.append(sketchsize) Gerror = [] Cerror = [] Magic_error = [] e1 = [] e2 = [] e3 = [] for i in range (repeat): print('repeat =',i) Gclass = GaussianSketch(inputdim, sketchsize) matrixC = Gclass.Apply(matrixA, applyLeft) Gerror.append(get_distortion(matrixA, matrixC)) Cclass = countSketch(inputdim, sketchsize) matrixC = Cclass.Apply(matrixA, applyLeft) Cerror.append(get_distortion(matrixA, matrixC)) # MagicClass = MagicGraph(inputdim, sketchsize) # matrixC = MagicClass.Apply(matrixA, applyLeft, num_randmatch = 2) # Magic_error.append(get_distortion(matrixA, matrixC)) # print('m',MagicClass.Matricize()) expander1 = ExpanderGraph(inputdim, sketchsize) matrixC = expander1.Apply(matrixA, applyLeft, sparsity = 1) e1.append(get_distortion(matrixA, matrixC)) expander2 = ExpanderGraph(inputdim, sketchsize)
while sketchsize <= M: print(sketchsize) sindex.append(sketchsize) Gerror = [] Cerror = [] SRHTerror = [] SRFTerror = [] GRHTerror = [] Magic_error = [] for i in range(repeat): print('repeat =', i) Gclass = GaussianSketch(inputdim, sketchsize) matrixC = Gclass.Apply(matrixA, applyLeft) # Gclass.Sanitycheck() Gerror.append(get_distortion(matrixA, matrixC)) Cclass = countSketch(inputdim, sketchsize) matrixC = Cclass.Apply(matrixA, applyLeft) Cerror.append(get_distortion(matrixA, matrixC)) SRHTclass = SRHT(inputdim, sketchsize) matrixC = SRHTclass.Apply(matrixA, applyLeft) SRHTerror.append(get_distortion(matrixA, matrixC)) GRHTclass = GRHT(inputdim, sketchsize) matrixC = GRHTclass.Apply(matrixA, applyLeft) GRHTerror.append(get_distortion(matrixA, matrixC)) SRFTclass = SRFT(inputdim, sketchsize) matrixC = SRFTclass.Apply(matrixA, applyLeft) SRFTerror.append(get_distortion(matrixA, matrixC))