1*34b254c5SRichard Tran Mills# Simple linear regression test 2*34b254c5SRichard Tran Mills# ============================= 3*34b254c5SRichard Tran Mills# 4*34b254c5SRichard Tran Mills# Use the petsc4py interface to PetscRegressor to solve the same quadratic 5*34b254c5SRichard Tran Mills# polynomial data-fitting problem that is solved in src/ml/regressor/tests/ex1.c. 6*34b254c5SRichard Tran Mills 7*34b254c5SRichard Tran Millsimport sys 8*34b254c5SRichard Tran Millsimport petsc4py 9*34b254c5SRichard Tran Mills 10*34b254c5SRichard Tran Millspetsc4py.init(sys.argv) 11*34b254c5SRichard Tran Mills 12*34b254c5SRichard Tran Millsfrom petsc4py import PETSc 13*34b254c5SRichard Tran Mills 14*34b254c5SRichard Tran Millscomm = PETSc.COMM_WORLD 15*34b254c5SRichard Tran Millssize = comm.getSize() 16*34b254c5SRichard Tran Millsrank = comm.getRank() 17*34b254c5SRichard Tran Mills 18*34b254c5SRichard Tran MillsOptDB = PETSc.Options() 19*34b254c5SRichard Tran Mills 20*34b254c5SRichard Tran Millsy_array = [0.2, -0.3, -0.8, -0.3, 1.2] 21*34b254c5SRichard Tran MillsX_array = [-1.0, 0.5, -0.5, -0.25, 0.0, -0.5, 0.5, -0.25, 1.0, 0.5] 22*34b254c5SRichard Tran Millsrows_ix = [0, 1, 2, 3, 4] 23*34b254c5SRichard Tran Millscols_ix = [0, 1] 24*34b254c5SRichard Tran Mills 25*34b254c5SRichard Tran MillsX = PETSc.Mat().create(comm=comm) 26*34b254c5SRichard Tran MillsX.setSizes((5,2)) 27*34b254c5SRichard Tran MillsX.setFromOptions() 28*34b254c5SRichard Tran MillsX.setUp() 29*34b254c5SRichard Tran Mills 30*34b254c5SRichard Tran Millsy = PETSc.Vec().create(comm=comm) 31*34b254c5SRichard Tran Millsy.setSizes(5) 32*34b254c5SRichard Tran Millsy.setFromOptions() 33*34b254c5SRichard Tran Mills 34*34b254c5SRichard Tran Millsif not rank : 35*34b254c5SRichard Tran Mills X.setValues(rows_ix,cols_ix,X_array,addv=True) 36*34b254c5SRichard Tran Mills y.setValues(rows_ix,y_array,addv=False) 37*34b254c5SRichard Tran Mills 38*34b254c5SRichard Tran MillsX.assemblyBegin(X.AssemblyType.FINAL) 39*34b254c5SRichard Tran MillsX.assemblyEnd(X.AssemblyType.FINAL) 40*34b254c5SRichard Tran Millsy.assemblyBegin() 41*34b254c5SRichard Tran Millsy.assemblyEnd() 42*34b254c5SRichard Tran Mills 43*34b254c5SRichard Tran Millsy_predicted = y.duplicate() 44*34b254c5SRichard Tran Mills 45*34b254c5SRichard Tran Millsregressor = PETSc.Regressor().create(comm=comm) 46*34b254c5SRichard Tran Millsregressor.setType(PETSc.Regressor.Type.LINEAR) 47*34b254c5SRichard Tran Millsregressor.fit(X,y) 48*34b254c5SRichard Tran Millsregressor.predict(X,y_predicted) 49*34b254c5SRichard Tran Millsy_predicted.view() 50*34b254c5SRichard Tran Mills 51*34b254c5SRichard Tran Mills 52*34b254c5SRichard Tran Mills 53