def test_get_duration(n_timepoints, index_type): index = _make_index(n_timepoints, index_type) duration = _get_duration(index) # check output type is duration type assert isinstance( duration, (pd.Timedelta, pd.tseries.offsets.BaseOffset, int, np.integer)) # check integer output duration = _get_duration(index, coerce_to_int=True) assert isinstance(duration, (int, np.integer)) assert duration == n_timepoints - 1
def _align_seasonal(self, y): """Align seasonal components with y's time index""" shift = (-_get_duration( y.index[0], self._y_index[0], coerce_to_int=True, unit=_get_freq(self._y_index), ) % self.sp) return np.resize(np.roll(self.seasonal_, shift=shift), y.shape[0])
def test_get_duration(n_timepoints, index_type): """Test getting of duration.""" if index_type != "timedelta": index = _make_index(n_timepoints, index_type) duration = _get_duration(index) # check output type is duration type assert isinstance( duration, (pd.Timedelta, pd.tseries.offsets.BaseOffset, int, np.integer)) # check integer output duration = _get_duration(index, coerce_to_int=True) assert isinstance(duration, (int, np.integer)) assert duration == n_timepoints - 1 else: match = "index_class: timedelta is not supported" with pytest.raises(ValueError, match=match): _make_index(n_timepoints, index_type)
def fit(self, y_train, fh=None, X_train=None): """Fit to training data. Parameters ---------- y_train : pd.Series Target time series with which to fit the forecaster. fh : int, list or np.array, optional (default=None) The forecast horizon with the steps ahead to predict. X_train : pd.DataFrame, optional (default=None) Exogenous variables are ignored Returns ------- self : returns an instance of self. """ if X_train is not None: raise NotImplementedError("Exogeneous variables are not " "yet supported") self._set_y_X(y_train, X_train) self._set_fh(fh) # for default regressor, set fit_intercept=False as we generate a # dummy variable in polynomial features if self.regressor is None: regressor = LinearRegression(fit_intercept=False) else: regressor = self.regressor # make pipeline with polynomial features self.regressor_ = make_pipeline( PolynomialFeatures(degree=self.degree, include_bias=self.with_intercept), regressor, ) # transform data n_timepoints = _get_duration(self._y.index, coerce_to_int=True) + 1 X_train = np.arange(n_timepoints).reshape(-1, 1) # fit regressor self.regressor_.fit(X_train, y_train) self._is_fitted = True return self
def _fit(self, y, X=None, fh=None): """Fit to training data. Parameters ---------- y : pd.Series Target time series with which to fit the forecaster. X : pd.DataFrame, default=None Exogenous variables are ignored fh : int, list or np.array, default=None The forecasters horizon with the steps ahead to to predict. Returns ------- self : returns an instance of self. """ # for default regressor, set fit_intercept=False as we generate a # dummy variable in polynomial features if self.regressor is None: regressor = LinearRegression(fit_intercept=False) else: regressor = self.regressor # make pipeline with polynomial features self.regressor_ = make_pipeline( PolynomialFeatures(degree=self.degree, include_bias=self.with_intercept), regressor, ) # transform data n_timepoints = _get_duration(self._y.index, coerce_to_int=True) + 1 X = np.arange(n_timepoints).reshape(-1, 1) # fit regressor self.regressor_.fit(X, y) return self