xref: /petsc/src/binding/petsc4py/demo/regressor/test_regressor.py (revision c12c126234ed623246a63bfa78c9f75a3aa00323)
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