DynaDojo / dynadojo

An Extensible Benchmarking Platform for Scalable Dynamical System Identification
https://dynadojo.github.io/dynadojo/
MIT License
14 stars 11 forks source link

Error running FTS(Heat, LR) because of NaN values #23

Open carynbear opened 7 months ago

carynbear commented 7 months ago

Error Message:

/dynadojo/pkgs/dynadojo/systems/heat.py:72: RuntimeWarning: invalid value encountered in scalar add
  u[k][i + 1][j] + u[k][i - 1][j] + u[k][i][j + 1] + u[k][i][j - 1] - 4 * u[k][i][j]) + \
/dynadojo/pkgs/dynadojo/systems/heat.py:105: RuntimeWarning: invalid value encountered in add
  data += self._rng.normal(scale=self._noise_scale, size=data.shape)
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/local/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/dynadojo/experiments/__main__.py", line 139, in <module>
    run_challenge(
  File "/dynadojo/experiments/main.py", line 101, in run_challenge
    data = challenge.evaluate(
  File "/dynadojo/pkgs/dynadojo/challenges.py", line 158, in evaluate
    return super().evaluate(
  File "/dynadojo/pkgs/dynadojo/abstractions.py", line 502, in evaluate
    data_job = self.execute_job(**kwargs, **job)
  File "/dynadojo/pkgs/dynadojo/challenges.py", line 296, in execute_job
    algo_run(n)
  File "/dynadojo/pkgs/dynadojo/challenges.py", line 277, in algo_run
    total_cost = self._fit_algo(system, algo, training_set_n, self._t, max_control_cost, fit_kwargs,
  File "/dynadojo/pkgs/dynadojo/challenges.py", line 184, in _fit_algo
    algo.fit(x)
  File "/dynadojo/pkgs/dynadojo/wrappers.py", line 108, in fit
    self._alg.fit(x, **kwargs)
  File "/dynadojo/pkgs/dynadojo/baselines/lr.py", line 30, in fit
    self.model.fit(X_train, y_train)
  File "/dynadojo/pkgs/sklearn/base.py", line 1351, in wrapper
    return fit_method(estimator, *args, **kwargs)
  File "/dynadojo/pkgs/sklearn/linear_model/_base.py", line 578, in fit
    X, y = self._validate_data(
  File "/dynadojo/pkgs/sklearn/base.py", line 650, in _validate_data
    X, y = check_X_y(X, y, **check_params)
  File "/dynadojo/pkgs/sklearn/utils/validation.py", line 1192, in check_X_y
    X = check_array(
  File "/dynadojo/pkgs/sklearn/utils/validation.py", line 1003, in check_array
    _assert_all_finite(
  File "/dynadojo/pkgs/sklearn/utils/validation.py", line 126, in _assert_all_finite
    _assert_all_finite_element_wise(
  File "/dynadojo/pkgs/sklearn/utils/validation.py", line 175, in _assert_all_finite_element_wise
    raise ValueError(msg_err)
ValueError: Input X contains NaN.
LinearRegression does not accept missing values encoded as NaN natively. For supervised learning, you might want to consider sklearn.ensemble.HistGradientBoostingClassifier and Regressor which accept missing values encoded as NaNs natively. Alternatively, it is possible to preprocess the data, for instance by using an imputer transformer in a pipeline or drop samples with missing values. See https://scikit-learn.org/stable/modules/impute.html You can find a list of all estimators that handle NaN values at the following page: https://scikit-learn.org/stable/modules/impute.html#estimators-that-handle-nan-values

To reproduce

{
    "challenge": {
        "L": [4, 9, 16, 25],
        "n": 1000,
        "t": 20,
        "trials": 20,
        "test_examples": 50,
        "test_timesteps": 20,
        "E": null,
        "max_control_cost_per_dim": 1,
        "control_horizons": 0,
        "system_kwargs": null,
        "system_cls": {
            "type": "serialized_class",
            "module_name": "dynadojo.systems.heat",
            "class_name": "HeatEquation"
        }
    },
    "evaluate": {
        "seed": 1027,
        "algo_kwargs": null,
        "fit_kwargs": null,
        "act_kwargs": null,
        "num_parallel_cpu": 0,
        "noisy": true,
        "ood": true,
        "algo_cls": {
            "type": "serialized_class",
            "module_name": "dynadojo.baselines.lr",
            "class_name": "LinearRegression"
        }
    },
    "challenge_cls": {
        "type": "serialized_class",
        "module_name": "dynadojo.challenges",
        "class_name": "FixedTrainSize"
    },
    "experiment_name": "fts_heat_lr_test_n=1000",
    "folder_path": "fts/heat/fts_heat_lr_test_n=1000",
    "total_jobs": 80
}