Source code for mlinsights.timeseries.dummies

"""
Dummy auto-regressor which takes past values as predictions.


:githublink:`%|py|5`
"""
import numpy
from .base import BaseTimeSeries, TimeSeriesRegressorMixin
from .utils import check_ts_X_y


[docs]class DummyTimeSeriesRegressor(BaseTimeSeries, TimeSeriesRegressorMixin): """ Dummy regressor for time series. Use past values as prediction. :githublink:`%|py|13` """
[docs] def __init__(self, estimator="dummy", past=1, delay1=1, delay2=2, use_all_past=False, preprocessing=None): """ :param estimator: estimator to use for regression, :epkg:`sklearn:linear_model:LinearRegression` implements a linear auto-regressor, ``'dummy'`` use past value as predictions :param past: values to use to predict :param delay1: the model computes the first prediction for *time=t + delay1* :param delay2: the model computes the last prediction for *time=t + delay2* excluded :param use_all_past: use all past features, not only the timeseries :param preprocessing: preprocessing to apply before predicting, only the timeseries itselves, it can be a difference, it must be of type :class:`BaseReciprocalTimeSeriesTransformer <mlinsights.timeseries.base.BaseReciprocalTimeSeriesTransformer>` :githublink:`%|py|32` """ TimeSeriesRegressorMixin.__init__(self) BaseTimeSeries.__init__(self, past=past, delay1=delay1, delay2=delay2, use_all_past=use_all_past, preprocessing=preprocessing)
[docs] def fit(self, X, y, sample_weight=None): """ Trains the model. :param X: output of X may be empty (None) :param y: timeseries (one single vector), array [n_obs] :param sample_weight: weights None or array [n_obs] :return: self :githublink:`%|py|46` """ X, y, _ = self._base_fit_predict(X, y, sample_weight) check_ts_X_y(self, X, y) return self
[docs] def predict(self, X, y): """ Returns the prediction :githublink:`%|py|54` """ X, y, _ = self._base_fit_predict(X, y, None) check_ts_X_y(self, X, y) nbrow = X.shape[0] X, y = self._applies_preprocessing(X, y, None)[:2] nb = self.delay2 - self.delay1 pred = numpy.empty((nbrow, nb), dtype=X.dtype) first = nbrow - X.shape[0] pred[:first] = numpy.nan for i in range(0, nb): pred[first:, i] = X[:, -1] return pred