File: t_PenalizedLeastSquaresAlgorithm_std.py

package info (click to toggle)
openturns 1.7-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 38,588 kB
  • ctags: 26,495
  • sloc: cpp: 144,032; python: 26,855; ansic: 7,868; sh: 419; makefile: 263; yacc: 123; lex: 44
file content (70 lines) | stat: -rwxr-xr-x 2,728 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#! /usr/bin/env python

from __future__ import print_function, division
from openturns import *

TESTPREAMBLE()


dimension = 2
inVar = Description(dimension)
inVar[0] = "x1"
inVar[1] = "x2"
outVar = Description(1)
outVar[0] = "y"
formula = Description(1)
formula[0] = "x1^3+1.5*x2^3-x1*x2"
model = NumericalMathFunction(inVar, outVar, formula)
coll = []
formula[0] = "x1"
coll.append(NumericalMathFunction(inVar, outVar, formula))
formula[0] = "x2"
coll.append(NumericalMathFunction(inVar, outVar, formula))
formula[0] = "x1^2"
coll.append(NumericalMathFunction(inVar, outVar, formula))
formula[0] = "x2^2"
coll.append(NumericalMathFunction(inVar, outVar, formula))
basis = Basis(coll)
indices = list(range(len(coll)))
size = 5
inputSample = NumericalSample(size * size, dimension)
weight = NumericalPoint(inputSample.getSize(), 1)
for i in range(inputSample.getSize()):
    inputSample[i] = NumericalPoint(
        (float(i % size) / size, (1.0 * (i // size)) / size))
    weight[i] = (i % size + 1) * ((i // size) + 1)
penalizationFactor = 0.25
# Uniform weight, no penalization
algo = PenalizedLeastSquaresAlgorithm(
    inputSample, model(inputSample), NumericalPoint(inputSample.getSize(), 1.0), basis, indices)
print("Uniform weight, no penalization")
print("Coefficients=", (algo.getCoefficients()))
print("Residual=%g" % algo.getResidual())
print("RelativeError=%g" % algo.getRelativeError())
# Uniform weight, spherical penalization
algo = PenalizedLeastSquaresAlgorithm(
    inputSample, model(inputSample), NumericalPoint(inputSample.getSize(), 1.0), basis, indices, penalizationFactor)
print("Uniform weight, spherical penalization")
print("Coefficients=", (algo.getCoefficients()))
print("Residual=%g" % algo.getResidual())
# Non uniform weight, spherical penalization
algo = PenalizedLeastSquaresAlgorithm(
    inputSample, model(inputSample), weight, basis, indices)
print("Non uniform weight, no penalization")
print("Coefficients=", (algo.getCoefficients()))
print("Residual=%g" % algo.getResidual())
algo = PenalizedLeastSquaresAlgorithm(
    inputSample, model(inputSample), weight, basis, indices, penalizationFactor)
print("Non uniform weight, spherical penalization")
print("Coefficients=", (algo.getCoefficients()))
print("Residual=%g" % algo.getResidual())
penalizationMatrix = CovarianceMatrix(4)
for i in range(4):
    penalizationMatrix[i, i] = 1.0
for i in range(3):
    penalizationMatrix[i, i + 1] = 1.0 / 8.0
algo = PenalizedLeastSquaresAlgorithm(
    inputSample, model(inputSample), weight, basis, indices, penalizationFactor, penalizationMatrix)
print("Non uniform weight, non spherical penalization")
print("Coefficients=", (algo.getCoefficients()))
print("Residual=%g" % algo.getResidual())