Calibration of a polynomial regression

from __future__ import annotations

import matplotlib.pyplot as plt
from gemseo.algos.design_space import DesignSpace
from gemseo.api import configure_logger
from gemseo.mlearning.core.calibration import MLAlgoCalibration
from gemseo.mlearning.qual_measure.mse_measure import MSEMeasure
from gemseo.problems.dataset.rosenbrock import RosenbrockDataset
from matplotlib.tri import Triangulation

Load the dataset

dataset = RosenbrockDataset(opt_naming=False, n_samples=25)

Define the measure

configure_logger()
test_dataset = RosenbrockDataset(opt_naming=False)
measure_options = {"method": "test", "test_data": test_dataset}

Calibrate the degree of the polynomial regression

Define and execute the calibration

calibration_space = DesignSpace()
calibration_space.add_variable("degree", 1, "integer", 1, 10, 1)
calibration = MLAlgoCalibration(
    "PolynomialRegressor",
    dataset,
    ["degree"],
    calibration_space,
    MSEMeasure,
    measure_options,
)
calibration.execute({"algo": "fullfact", "n_samples": 10})
x_opt = calibration.optimal_parameters
f_opt = calibration.optimal_criterion
print("optimal degree:", x_opt["degree"][0])
print("optimal criterion:", f_opt)
    INFO - 11:22:31:
    INFO - 11:22:31: *** Start DOEScenario execution ***
    INFO - 11:22:31: DOEScenario
    INFO - 11:22:31:    Disciplines: MLAlgoAssessor
    INFO - 11:22:31:    MDO formulation: DisciplinaryOpt
    INFO - 11:22:31: Optimization problem:
    INFO - 11:22:31:    minimize criterion(degree)
    INFO - 11:22:31:    with respect to degree
    INFO - 11:22:31:    over the design space:
    INFO - 11:22:31:    +--------+-------------+-------+-------------+---------+
    INFO - 11:22:31:    | name   | lower_bound | value | upper_bound | type    |
    INFO - 11:22:31:    +--------+-------------+-------+-------------+---------+
    INFO - 11:22:31:    | degree |      1      |   1   |      10     | integer |
    INFO - 11:22:31:    +--------+-------------+-------+-------------+---------+
    INFO - 11:22:31: Solving optimization problem with algorithm fullfact:
    INFO - 11:22:31: ...   0%|          | 0/10 [00:00<?, ?it]
    INFO - 11:22:31: ... 100%|██████████| 10/10 [00:00<00:00, 295.47 it/sec, obj=1.63e+5]
    INFO - 11:22:31: Optimization result:
    INFO - 11:22:31:    Optimizer info:
    INFO - 11:22:31:       Status: None
    INFO - 11:22:31:       Message: None
    INFO - 11:22:31:       Number of calls to the objective function by the optimizer: 10
    INFO - 11:22:31:    Solution:
    INFO - 11:22:31:       Objective: 1.0957626812742524e-24
    INFO - 11:22:31:       Design space:
    INFO - 11:22:31:       +--------+-------------+-------+-------------+---------+
    INFO - 11:22:31:       | name   | lower_bound | value | upper_bound | type    |
    INFO - 11:22:31:       +--------+-------------+-------+-------------+---------+
    INFO - 11:22:31:       | degree |      1      |   4   |      10     | integer |
    INFO - 11:22:31:       +--------+-------------+-------+-------------+---------+
    INFO - 11:22:31: *** End DOEScenario execution (time: 0:00:00.043591) ***
optimal degree: 4
optimal criterion: 1.0957626812742524e-24

Get the history

print(calibration.dataset.export_to_dataframe())
        outputs inputs       outputs
      criterion degree      learning
              0      0             0
0  5.888317e+05    1.0  8.200828e+05
1  1.732475e+05    2.0  2.404571e+05
2  3.001292e+04    3.0  1.645714e+04
3  1.095763e-24    4.0  1.703801e-24
4  1.097877e-01    5.0  1.391092e-23
5  1.183264e+03    6.0  2.332471e-24
6  6.895919e+03    7.0  1.401963e-23
7  1.356307e+04    8.0  5.192192e-23
8  9.180547e+04    9.0  8.964290e-23
9  1.625259e+05   10.0  8.767875e-23

Visualize the results

degree = calibration.get_history("degree")
criterion = calibration.get_history("criterion")
learning = calibration.get_history("learning")

plt.plot(degree, criterion, "-o", label="test", color="red")
plt.plot(degree, learning, "-o", label="learning", color="blue")
plt.xlabel("polynomial degree")
plt.ylabel("quality")
plt.axvline(x_opt["degree"], color="red", ls="--")
plt.legend()
plt.show()
plot calibration

Calibrate the ridge penalty of the polynomial regression

Define and execute the calibration

calibration_space = DesignSpace()
calibration_space.add_variable("penalty_level", 1, "float", 0.0, 100.0, 0.0)
calibration = MLAlgoCalibration(
    "PolynomialRegressor",
    dataset,
    ["penalty_level"],
    calibration_space,
    MSEMeasure,
    measure_options,
    degree=10,
)
calibration.execute({"algo": "fullfact", "n_samples": 10})
x_opt = calibration.optimal_parameters
f_opt = calibration.optimal_criterion
print("optimal penalty_level:", x_opt["penalty_level"][0])
print("optimal criterion:", f_opt)
    INFO - 11:22:31:
    INFO - 11:22:31: *** Start DOEScenario execution ***
    INFO - 11:22:31: DOEScenario
    INFO - 11:22:31:    Disciplines: MLAlgoAssessor
    INFO - 11:22:31:    MDO formulation: DisciplinaryOpt
    INFO - 11:22:31: Optimization problem:
    INFO - 11:22:31:    minimize criterion(penalty_level)
    INFO - 11:22:31:    with respect to penalty_level
    INFO - 11:22:31:    over the design space:
    INFO - 11:22:31:    +---------------+-------------+-------+-------------+-------+
    INFO - 11:22:31:    | name          | lower_bound | value | upper_bound | type  |
    INFO - 11:22:31:    +---------------+-------------+-------+-------------+-------+
    INFO - 11:22:31:    | penalty_level |      0      |   0   |     100     | float |
    INFO - 11:22:31:    +---------------+-------------+-------+-------------+-------+
    INFO - 11:22:31: Solving optimization problem with algorithm fullfact:
    INFO - 11:22:31: ...   0%|          | 0/10 [00:00<?, ?it]
    INFO - 11:22:31: ... 100%|██████████| 10/10 [00:00<00:00, 322.40 it/sec, obj=3.59e+4]
    INFO - 11:22:31: Optimization result:
    INFO - 11:22:31:    Optimizer info:
    INFO - 11:22:31:       Status: None
    INFO - 11:22:31:       Message: None
    INFO - 11:22:31:       Number of calls to the objective function by the optimizer: 10
    INFO - 11:22:31:    Solution:
    INFO - 11:22:31:       Objective: 17189.52649297338
    INFO - 11:22:31:       Design space:
    INFO - 11:22:31:       +---------------+-------------+-------------------+-------------+-------+
    INFO - 11:22:31:       | name          | lower_bound |       value       | upper_bound | type  |
    INFO - 11:22:31:       +---------------+-------------+-------------------+-------------+-------+
    INFO - 11:22:31:       | penalty_level |      0      | 33.33333333333333 |     100     | float |
    INFO - 11:22:31:       +---------------+-------------+-------------------+-------------+-------+
    INFO - 11:22:31: *** End DOEScenario execution (time: 0:00:00.041139) ***
optimal penalty_level: 33.33333333333333
optimal criterion: 17189.52649297338

Get the history

print(calibration.dataset.export_to_dataframe())
         outputs                      inputs
       criterion      learning penalty_level
               0             0             0
0  162525.860760  8.767875e-23      0.000000
1   32506.221289  1.087801e+03     11.111111
2   17820.599507  1.982580e+03     22.222222
3   17189.526493  2.690007e+03     33.333333
4   19953.420378  3.251453e+03     44.444444
5   23493.269988  3.703714e+03     55.555556
6   27024.053276  4.074147e+03     66.666667
7   30303.486633  4.382362e+03     77.777778
8   33272.062305  4.642448e+03     88.888889
9   35934.745536  4.864667e+03    100.000000

Visualize the results

penalty_level = calibration.get_history("penalty_level")
criterion = calibration.get_history("criterion")
learning = calibration.get_history("learning")

plt.plot(penalty_level, criterion, "-o", label="test", color="red")
plt.plot(penalty_level, learning, "-o", label="learning", color="blue")
plt.axvline(x_opt["penalty_level"], color="red", ls="--")
plt.xlabel("ridge penalty")
plt.ylabel("quality")
plt.legend()
plt.show()
plot calibration

Calibrate the lasso penalty of the polynomial regression

Define and execute the calibration

calibration_space = DesignSpace()
calibration_space.add_variable("penalty_level", 1, "float", 0.0, 100.0, 0.0)
calibration = MLAlgoCalibration(
    "PolynomialRegressor",
    dataset,
    ["penalty_level"],
    calibration_space,
    MSEMeasure,
    measure_options,
    degree=10,
    l2_penalty_ratio=0.0,
)
calibration.execute({"algo": "fullfact", "n_samples": 10})
x_opt = calibration.optimal_parameters
f_opt = calibration.optimal_criterion
print("optimal penalty_level:", x_opt["penalty_level"][0])
print("optimal criterion:", f_opt)
    INFO - 11:22:31:
    INFO - 11:22:31: *** Start DOEScenario execution ***
    INFO - 11:22:31: DOEScenario
    INFO - 11:22:31:    Disciplines: MLAlgoAssessor
    INFO - 11:22:31:    MDO formulation: DisciplinaryOpt
    INFO - 11:22:31: Optimization problem:
    INFO - 11:22:31:    minimize criterion(penalty_level)
    INFO - 11:22:31:    with respect to penalty_level
    INFO - 11:22:31:    over the design space:
    INFO - 11:22:31:    +---------------+-------------+-------+-------------+-------+
    INFO - 11:22:31:    | name          | lower_bound | value | upper_bound | type  |
    INFO - 11:22:31:    +---------------+-------------+-------+-------------+-------+
    INFO - 11:22:31:    | penalty_level |      0      |   0   |     100     | float |
    INFO - 11:22:31:    +---------------+-------------+-------+-------------+-------+
    INFO - 11:22:31: Solving optimization problem with algorithm fullfact:
    INFO - 11:22:31: ...   0%|          | 0/10 [00:00<?, ?it]
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 5.301e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 4.631e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 2.284e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 1.984e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 1.054e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 1.152e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 9.925e+03, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 8.746e+03, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 6.372e+03, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
    INFO - 11:22:31: ... 100%|██████████| 10/10 [00:00<00:00, 150.01 it/sec, obj=7.57e+4]
    INFO - 11:22:31: Optimization result:
    INFO - 11:22:31:    Optimizer info:
    INFO - 11:22:31:       Status: None
    INFO - 11:22:31:       Message: None
    INFO - 11:22:31:       Number of calls to the objective function by the optimizer: 10
    INFO - 11:22:31:    Solution:
    INFO - 11:22:31:       Objective: 15775.989581125898
    INFO - 11:22:31:       Design space:
    INFO - 11:22:31:       +---------------+-------------+-------------------+-------------+-------+
    INFO - 11:22:31:       | name          | lower_bound |       value       | upper_bound | type  |
    INFO - 11:22:31:       +---------------+-------------+-------------------+-------------+-------+
    INFO - 11:22:31:       | penalty_level |      0      | 11.11111111111111 |     100     | float |
    INFO - 11:22:31:       +---------------+-------------+-------------------+-------------+-------+
    INFO - 11:22:31: *** End DOEScenario execution (time: 0:00:00.076699) ***
optimal penalty_level: 11.11111111111111
optimal criterion: 15775.989581125898

Get the history

print(calibration.dataset.export_to_dataframe())
         outputs                      inputs
       criterion      learning penalty_level
               0             0             0
0  162525.860760  8.767875e-23      0.000000
1   15775.989581  1.814382e+03     11.111111
2   31529.584354  4.057302e+03     22.222222
3   47420.249503  5.792299e+03     33.333333
4   59358.207437  7.169565e+03     44.444444
5   62656.171431  7.278397e+03     55.555556
6   66256.259889  7.410137e+03     66.666667
7   69336.190346  7.540731e+03     77.777778
8   72457.378777  7.675963e+03     88.888889
9   75749.793494  7.816545e+03    100.000000

Visualize the results

penalty_level = calibration.get_history("penalty_level")
criterion = calibration.get_history("criterion")
learning = calibration.get_history("learning")

plt.plot(penalty_level, criterion, "-o", label="test", color="red")
plt.plot(penalty_level, learning, "-o", label="learning", color="blue")
plt.axvline(x_opt["penalty_level"], color="red", ls="--")
plt.xlabel("lasso penalty")
plt.ylabel("quality")
plt.legend()
plt.show()
plot calibration

Calibrate the elasticnet penalty of the polynomial regression

Define and execute the calibration

calibration_space = DesignSpace()
calibration_space.add_variable("penalty_level", 1, "float", 0.0, 40.0, 0.0)
calibration_space.add_variable("l2_penalty_ratio", 1, "float", 0.0, 1.0, 0.5)
calibration = MLAlgoCalibration(
    "PolynomialRegressor",
    dataset,
    ["penalty_level", "l2_penalty_ratio"],
    calibration_space,
    MSEMeasure,
    measure_options,
    degree=10,
)
calibration.execute({"algo": "fullfact", "n_samples": 100})
x_opt = calibration.optimal_parameters
f_opt = calibration.optimal_criterion
print("optimal penalty_level:", x_opt["penalty_level"][0])
print("optimal l2_penalty_ratio:", x_opt["l2_penalty_ratio"][0])
print("optimal criterion:", f_opt)
    INFO - 11:22:32:
    INFO - 11:22:32: *** Start DOEScenario execution ***
    INFO - 11:22:32: DOEScenario
    INFO - 11:22:32:    Disciplines: MLAlgoAssessor
    INFO - 11:22:32:    MDO formulation: DisciplinaryOpt
    INFO - 11:22:32: Optimization problem:
    INFO - 11:22:32:    minimize criterion(penalty_level, l2_penalty_ratio)
    INFO - 11:22:32:    with respect to l2_penalty_ratio, penalty_level
    INFO - 11:22:32:    over the design space:
    INFO - 11:22:32:    +------------------+-------------+-------+-------------+-------+
    INFO - 11:22:32:    | name             | lower_bound | value | upper_bound | type  |
    INFO - 11:22:32:    +------------------+-------------+-------+-------------+-------+
    INFO - 11:22:32:    | penalty_level    |      0      |   0   |      40     | float |
    INFO - 11:22:32:    | l2_penalty_ratio |      0      |  0.5  |      1      | float |
    INFO - 11:22:32:    +------------------+-------------+-------+-------------+-------+
    INFO - 11:22:32: Solving optimization problem with algorithm fullfact:
    INFO - 11:22:32: ...   0%|          | 0/100 [00:00<?, ?it]
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 2.904e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 1.786e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 2.325e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 4.034e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 4.631e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 4.166e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 1.968e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 2.545e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 2.811e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 5.233e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 6.032e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 4.991e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 5.326e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
    INFO - 11:22:32: ...  15%|█▌        | 15/100 [00:00<00:00, 992.27 it/sec, obj=4.19e+4]
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 5.100e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 4.636e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 4.011e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 4.376e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 3.274e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 5.416e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 7.049e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 7.114e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 6.879e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 6.346e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 5.139e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 3.088e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 2.614e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 2.419e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
    INFO - 11:22:32: ...  30%|███       | 30/100 [00:00<00:00, 496.99 it/sec, obj=6.18e+4]
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 6.445e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 7.489e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 7.720e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 7.355e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 5.901e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 4.912e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 4.813e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 4.575e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 4.228e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 7.024e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 8.011e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 8.113e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 7.519e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 6.055e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
    INFO - 11:22:32: ...  46%|████▌     | 46/100 [00:00<00:00, 326.40 it/sec, obj=5.28e+4]
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 6.144e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 6.279e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 6.108e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 7.238e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 7.431e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 8.364e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 8.413e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 7.943e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 7.337e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 7.369e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 7.650e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 7.892e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 8.651e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 7.740e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
    INFO - 11:22:32: ...  62%|██████▏   | 62/100 [00:00<00:00, 242.99 it/sec, obj=3.18e+4]
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 8.649e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 8.844e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 7.984e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 8.131e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 8.602e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 8.732e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 9.134e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 8.496e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 8.000e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 8.897e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 9.148e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 8.706e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 9.195e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 9.466e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 9.580e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
    INFO - 11:22:32: ...  78%|███████▊  | 78/100 [00:00<00:00, 191.24 it/sec, obj=6.32e+4]
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 9.258e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 8.020e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 8.222e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 9.179e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 9.446e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 9.507e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 9.936e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 1.005e+05, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 1.010e+05, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 9.877e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 9.866e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
    INFO - 11:22:32: ...  96%|█████████▌| 96/100 [00:00<00:00, 160.50 it/sec, obj=1.78e+4]
    INFO - 11:22:32: ... 100%|██████████| 100/100 [00:00<00:00, 157.56 it/sec, obj=1.87e+4]
    INFO - 11:22:32: Optimization result:
    INFO - 11:22:32:    Optimizer info:
    INFO - 11:22:32:       Status: None
    INFO - 11:22:32:       Message: None
    INFO - 11:22:32:       Number of calls to the objective function by the optimizer: 100
    INFO - 11:22:32:    Solution:
    INFO - 11:22:32:       Objective: 4136.820826715568
    INFO - 11:22:32:       Design space:
    INFO - 11:22:32:       +------------------+-------------+-------------------+-------------+-------+
    INFO - 11:22:32:       | name             | lower_bound |       value       | upper_bound | type  |
    INFO - 11:22:32:       +------------------+-------------+-------------------+-------------+-------+
    INFO - 11:22:32:       | penalty_level    |      0      | 4.444444444444445 |      40     | float |
    INFO - 11:22:32:       | l2_penalty_ratio |      0      |         0         |      1      | float |
    INFO - 11:22:32:       +------------------+-------------+-------------------+-------------+-------+
    INFO - 11:22:32: *** End DOEScenario execution (time: 0:00:00.645276) ***
optimal penalty_level: 4.444444444444445
optimal l2_penalty_ratio: 0.0
optimal criterion: 4136.820826715568

Get the history

print(calibration.dataset.export_to_dataframe())
          outputs           inputs       outputs        inputs
        criterion l2_penalty_ratio      learning penalty_level
                0                0             0             0
0   162525.860760              0.0  8.767875e-23      0.000000
1     4136.820827              0.0  4.546714e+02      4.444444
2    13371.034446              0.0  1.375915e+03      8.888889
3    17860.819693              0.0  2.176736e+03     13.333333
4    23914.366014              0.0  3.005032e+03     17.777778
..            ...              ...           ...           ...
95   17820.599507              1.0  1.982580e+03     22.222222
96   16816.595592              1.0  2.285780e+03     26.666667
97   16894.821607              1.0  2.561538e+03     31.111111
98   17602.178769              1.0  2.812662e+03     35.555556
99   18674.751406              1.0  3.041823e+03     40.000000

[100 rows x 4 columns]

Visualize the results

penalty_level = calibration.get_history("penalty_level").flatten()
l2_penalty_ratio = calibration.get_history("l2_penalty_ratio").flatten()
criterion = calibration.get_history("criterion").flatten()
learning = calibration.get_history("learning").flatten()

triang = Triangulation(penalty_level, l2_penalty_ratio)

fig = plt.figure()
ax = fig.add_subplot(1, 2, 1)
ax.tricontourf(triang, criterion, cmap="Purples")
ax.scatter(x_opt["penalty_level"][0], x_opt["l2_penalty_ratio"][0])
ax.set_xlabel("penalty level")
ax.set_ylabel("l2 penalty ratio")
ax.set_title("Test measure")
ax = fig.add_subplot(1, 2, 2)
ax.tricontourf(triang, learning, cmap="Purples")
ax.scatter(x_opt["penalty_level"][0], x_opt["l2_penalty_ratio"][0])
ax.set_xlabel("penalty level")
ax.set_ylabel("l2 penalty ratio")
ax.set_title("Learning measure")

plt.show()
Test measure, Learning measure

Add an optimization stage

calibration_space = DesignSpace()
calibration_space.add_variable("penalty_level", 1, "float", 0.0, 40.0, 0.0)
calibration_space.add_variable("l2_penalty_ratio", 1, "float", 0.0, 1.0, 0.5)
calibration = MLAlgoCalibration(
    "PolynomialRegressor",
    dataset,
    ["penalty_level", "l2_penalty_ratio"],
    calibration_space,
    MSEMeasure,
    measure_options,
    degree=10,
)
calibration.execute({"algo": "NLOPT_COBYLA", "max_iter": 100})
x_opt2 = calibration.optimal_parameters
f_opt2 = calibration.optimal_criterion

fig = plt.figure()
ax = fig.add_subplot(1, 2, 1)
ax.tricontourf(triang, criterion, cmap="Purples")
ax.scatter(x_opt["penalty_level"][0], x_opt["l2_penalty_ratio"][0])
ax.scatter(x_opt2["penalty_level"][0], x_opt2["l2_penalty_ratio"][0], color="red")
ax.set_xlabel("penalty level")
ax.set_ylabel("l2 penalty ratio")
ax.set_title("Test measure")
ax = fig.add_subplot(1, 2, 2)
ax.tricontourf(triang, learning, cmap="Purples")
ax.scatter(x_opt["penalty_level"][0], x_opt["l2_penalty_ratio"][0])
ax.scatter(x_opt2["penalty_level"][0], x_opt2["l2_penalty_ratio"][0], color="red")
ax.set_xlabel("penalty level")
ax.set_ylabel("l2 penalty ratio")
ax.set_title("Learning measure")
plt.show()

n_iterations = len(calibration.scenario.disciplines[0].cache)
print(f"MSE with DOE: {f_opt} (100 evaluations)")
print(f"MSE with OPT: {f_opt2} ({n_iterations} evaluations)")
print(f"MSE reduction:{round((f_opt2 - f_opt) / f_opt * 100)}%")
Test measure, Learning measure
    INFO - 11:22:32:
    INFO - 11:22:32: *** Start MDOScenario execution ***
    INFO - 11:22:32: MDOScenario
    INFO - 11:22:32:    Disciplines: MLAlgoAssessor
    INFO - 11:22:32:    MDO formulation: DisciplinaryOpt
    INFO - 11:22:32: Optimization problem:
    INFO - 11:22:32:    minimize criterion(penalty_level, l2_penalty_ratio)
    INFO - 11:22:32:    with respect to l2_penalty_ratio, penalty_level
    INFO - 11:22:32:    over the design space:
    INFO - 11:22:32:    +------------------+-------------+-------+-------------+-------+
    INFO - 11:22:32:    | name             | lower_bound | value | upper_bound | type  |
    INFO - 11:22:32:    +------------------+-------------+-------+-------------+-------+
    INFO - 11:22:32:    | penalty_level    |      0      |   0   |      40     | float |
    INFO - 11:22:32:    | l2_penalty_ratio |      0      |  0.5  |      1      | float |
    INFO - 11:22:32:    +------------------+-------------+-------+-------------+-------+
    INFO - 11:22:32: Solving optimization problem with algorithm NLOPT_COBYLA:
    INFO - 11:22:32: ...   0%|          | 0/100 [00:00<?, ?it]
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 8.287e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 8.952e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 7.118e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 8.089e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 7.973e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 7.402e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 6.059e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 1.428e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
/home/docs/checkouts/readthedocs.org/user_builds/gemseo/envs/develop/lib/python3.9/site-packages/sklearn/linear_model/_coordinate_descent.py:648: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations, check the scale of the features or consider increasing regularisation. Duality gap: 2.976e+04, tolerance: 2.850e+03
  model = cd_fast.enet_coordinate_descent(
    INFO - 11:22:32: ...  14%|█▍        | 14/100 [00:00<00:00, 965.62 it/sec, obj=493]
    INFO - 11:22:33: ...  16%|█▌        | 16/100 [00:00<00:00, 859.98 it/sec, obj=493]
    INFO - 11:22:33: Optimization result:
    INFO - 11:22:33:    Optimizer info:
    INFO - 11:22:33:       Status: None
    INFO - 11:22:33:       Message: Successive iterates of the objective function are closer than ftol_rel or ftol_abs. GEMSEO Stopped the driver
    INFO - 11:22:33:       Number of calls to the objective function by the optimizer: 17
    INFO - 11:22:33:    Solution:
    INFO - 11:22:33:       Objective: 493.1818200496802
    INFO - 11:22:33:       Design space:
    INFO - 11:22:33:       +------------------+-------------+-----------------------+-------------+-------+
    INFO - 11:22:33:       | name             | lower_bound |         value         | upper_bound | type  |
    INFO - 11:22:33:       +------------------+-------------+-----------------------+-------------+-------+
    INFO - 11:22:33:       | penalty_level    |      0      | 2.289834988289385e-15 |      40     | float |
    INFO - 11:22:33:       | l2_penalty_ratio |      0      |   0.5765298371174132  |      1      | float |
    INFO - 11:22:33:       +------------------+-------------+-----------------------+-------------+-------+
    INFO - 11:22:33: *** End MDOScenario execution (time: 0:00:00.130206) ***
MSE with DOE: 4136.820826715568 (100 evaluations)
MSE with OPT: 493.1818200496802 (2 evaluations)
MSE reduction:-88%

Total running time of the script: ( 0 minutes 1.852 seconds)

Gallery generated by Sphinx-Gallery