diff --git a/CHANGELOG.md b/CHANGELOG.md index eab8505bb0..77383fffbb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,7 @@ but cannot always guarantee backwards compatibility. Changes that may **break co - Bumped minimum scikit-learn version from `1.0.1` to `1.6.0`. This was required due to sklearn deprecating `_get_tags` in favor of `BaseEstimator.__sklearn_tags__` in version 1.7. This leads to increasing both sklearn and XGBoost minimum supported version to 1.6 and 2.1.4 respectively. [#2659](https://github.com/unit8co/darts/pull/2659) by [Jonas Blanc](https://github.com/jonasblanc) - Bumped minimum xgboost version from `1.6.0` to `2.1.4` for the same reason as bumping the minimum sklearn version. [#2659](https://github.com/unit8co/darts/pull/2659) by [Jonas Blanc](https://github.com/jonasblanc) +- Various code changes to reflect the updated dependencies versions (sklearn, statsmodel) and eliminate various warnings. [#2722](https://github.com/unit8co/darts/pull/2722) by [Antoine Madrona](https://github.com/madtoinou) ### For developers of the library: diff --git a/darts/models/forecasting/arima.py b/darts/models/forecasting/arima.py index 7c84c2385c..5102bce6fb 100644 --- a/darts/models/forecasting/arima.py +++ b/darts/models/forecasting/arima.py @@ -20,7 +20,6 @@ from typing_extensions import TypeAlias import numpy as np -from statsmodels import __version_tuple__ as statsmodels_version from statsmodels.tsa.arima.model import ARIMA as staARIMA from darts.logging import get_logger @@ -31,9 +30,6 @@ logger = get_logger(__name__) -# Check whether we are running statsmodels >= 0.13.5 or not: -statsmodels_above_0135 = statsmodels_version > (0, 13, 5) - IntOrIntSequence: TypeAlias = Union[int, Sequence[int]] @@ -137,15 +133,11 @@ def encode_year(idx): self.seasonal_order = seasonal_order self.trend = trend self.model = None - if statsmodels_above_0135: - self._random_state = ( - random_state - if random_state is None - else np.random.RandomState(random_state) - ) - else: - self._random_state = None - np.random.seed(random_state if random_state is not None else 0) + self._random_state = ( + random_state + if random_state is None + else np.random.RandomState(random_state) + ) @property def supports_multivariate(self) -> bool: diff --git a/darts/utils/multioutput.py b/darts/utils/multioutput.py index f7ff24dadd..8077e59588 100644 --- a/darts/utils/multioutput.py +++ b/darts/utils/multioutput.py @@ -1,27 +1,18 @@ from typing import Optional -from sklearn import __version__ as sklearn_version from sklearn.base import is_classifier from sklearn.multioutput import MultiOutputRegressor as sk_MultiOutputRegressor from sklearn.multioutput import _fit_estimator from sklearn.utils.multiclass import check_classification_targets -from sklearn.utils.validation import has_fit_parameter +from sklearn.utils.parallel import Parallel, delayed +from sklearn.utils.validation import ( + _check_method_params, + has_fit_parameter, + validate_data, +) from darts.logging import get_logger, raise_log -if sklearn_version >= "1.4": - # sklearn renamed `_check_fit_params` to `_check_method_params` in v1.4 - from sklearn.utils.validation import _check_method_params -else: - from sklearn.utils.validation import _check_fit_params as _check_method_params - -if sklearn_version >= "1.3": - # delayed was moved from sklearn.utils.fixes to sklearn.utils.parallel in v1.3 - from sklearn.utils.parallel import Parallel, delayed -else: - from joblib import Parallel - from sklearn.utils.fixes import delayed - logger = get_logger(__name__) @@ -78,8 +69,7 @@ def fit(self, X, y, sample_weight=None, **fit_params): ValueError("The base estimator should implement a fit method"), logger=logger, ) - - y = self._validate_data(X="no_validation", y=y, multi_output=True) + y = validate_data(self.estimator, X="no_validation", y=y, multi_output=True) if is_classifier(self): check_classification_targets(y)