Esempio n. 1
0
    def transform(self, Z, X=None):
        self.check_is_fitted()
        z = check_series(Z, enforce_univariate=True)

        # Passing an alpha values other than None would return confidence intervals
        # and break the signature of the series-to-series transformer
        zt = acf(
            z,
            adjusted=self.adjusted,
            nlags=self.n_lags,
            qstat=self.qstat,
            fft=self.fft,
            alpha=None,
            missing=self.missing,
        )
        return pd.Series(zt)
Esempio n. 2
0
    def _run_clasp(self, X):
        X = check_series(X, enforce_univariate=True, allow_numpy=True)

        if isinstance(X, pd.Series):
            X = X.to_numpy()

        clasp_transformer = ClaSPTransformer(
            window_length=self.period_length).fit(X)

        self.found_cps, self.profiles, self.scores = _segmentation(
            X,
            clasp_transformer,
            n_change_points=self.n_cps,
            exclusion_radius=0.05)

        return self.found_cps, self.profiles, self.scores
Esempio n. 3
0
    def transform(self, Z, X=None):
        """
        Parameters
        ----------
        Z: pandas.Series
            Time series dataset(lets say of length=n)

        Returns
        ----------
        Z: pandas.Series
            Matrix Profile of time series as output with length as (n-window_length+1)
        """
        self.check_is_fitted()
        Z = check_series(Z, enforce_univariate=True)
        Z = stumpy.stump(Z, self.window_length)
        return pd.Series(Z[:, 0])
Esempio n. 4
0
    def inverse_transform(self, Z, X=None):
        """Inverse transform data.

        Parameters
        ----------
        Z : TimeSeries

        Returns
        -------
        Zt : TimeSeries
            Inverse-transformed time series.
        """
        self.check_is_fitted()
        Z = check_series(Z)
        Zt = self.transformer_.inverse_transform(_from_series_to_2d_numpy(Z))
        return _from_2d_numpy_to_series(Zt, index=Z.index)
Esempio n. 5
0
    def predict_scores(self, X):
        """Return scores for predicted annotations on test/deployment data.

        Parameters
        ----------
        X : pd.DataFrame
            Data to annotate (time series).

        Returns
        -------
        Y : pd.Series
            Scores for sequence X exact format depends on annotation type.
        """
        self.check_is_fitted()
        X = check_series(X)
        return self._predict_scores(X)
Esempio n. 6
0
    def fit(self, Z, X=None):
        """Fit data.

        Iterates over columns (series) and applies
        the fit function of the transformer.

        Parameters
        ----------
        Z : pd.Series, pd.DataFrame

        Returns
        -------
        self : an instance of self
        """
        self._is_fitted = False

        z = check_series(Z, allow_numpy=False)

        # cast to pd.DataFrame in univariate case
        if isinstance(z, pd.Series):
            z = z.to_frame()

        # check that columns are None or list of strings
        if self.columns is not None:
            if not isinstance(self.columns, list) and all(
                    isinstance(s, str) for s in self.columns):
                raise ValueError(
                    "Columns need to be a list of strings or None.")

        # set self.columns_ to columns that are going to be transformed
        # (all if self.columns is None)
        self.columns_ = self.columns
        if self.columns_ is None:
            self.columns_ = z.columns

        # make sure z contains all columns that the user wants to transform
        _check_columns(z, selected_columns=self.columns_)

        # fit by iterating over columns
        self.transformers_ = {}
        for colname in self.columns_:
            transformer = clone(self.transformer)
            self.transformers_[colname] = transformer
            self.transformers_[colname].fit(z[colname], X)
        self._is_fitted = True
        return self
Esempio n. 7
0
    def update(self, Z, X=None, update_params=False):
        """Update fitted parameters

        Parameters
        ----------
        y : pd.Series
        X : pd.DataFrame
        update_params : bool, optional (default=False)

        Returns
        -------
        self : an instance of self
        """
        self.check_is_fitted()
        z = check_series(Z, enforce_univariate=True)
        self._set_y_index(z)
        return self
Esempio n. 8
0
    def fit(self, Z, X=None):
        """Fit.

        Parameters
        ----------
        Z : TimeSeries
        X : TimeSeries

        Returns
        -------
        self
        """
        Z = check_series(Z)
        self.transformer_ = clone(self.transformer)
        self.transformer_.fit(_from_series_to_2d_numpy(Z))
        self._is_fitted = True
        return self
Esempio n. 9
0
    def transform(self, Z, X=None):
        """Transform data.
        Returns a transformed version of y.

        Parameters
        ----------
        y : pd.Series

        Returns
        -------
        yt : pd.Series
            Transformed time series.
        """
        self.check_is_fitted()
        Z = check_series(Z)
        Zt = self.transformer_.transform(_from_series_to_2d_numpy(Z))
        return _from_2d_numpy_to_series(Zt, index=Z.index)
Esempio n. 10
0
    def inverse_transform(self, Z, X=None):
        """Reverse transformation on input series `Z`.

        Parameters
        ----------
        Z : pd.Series or pd.DataFrame
            A time series to reverse the transformation on.

        Returns
        -------
        Z_inv : pd.Series or pd.DataFrame
            The reconstructed timeseries after the transformation has been reversed.
        """
        self.check_is_fitted()
        Z = check_series(Z)

        return self._inverse_transform(Z, X=X)
Esempio n. 11
0
    def transform(self, Z, X=None):
        """Return transformed version of input series `Z`.

        Parameters
        ----------
        Z : pd.Series or pd.DataFrame
            A time series to apply the specified transformation on.

        Returns
        -------
        Zt : pd.Series or pd.DataFrame
            Transformed version of input series `Z`.
        """
        self.check_is_fitted()
        Z = check_series(Z)

        return self._transform(Z, X=X)
Esempio n. 12
0
    def inverse_transform(self, Z, X=None):
        """Reverse transformation on input series `Z`.

        Parameters
        ----------
        Z : pd.Series or pd.DataFrame
            A time series to reverse the transformation on.
        X : pd.DataFrame, default=None
            Exogenous data used in transformation.

        Returns
        -------
        Z_inv : pd.Series or pd.DataFrame
            The reconstructed timeseries after the transformation has been reversed.
        """
        self.check_is_fitted()
        Z = check_series(Z)
        return self._get_inverse_transform(self.transformers_pre_, Z, X)
Esempio n. 13
0
    def transform(self, Z, X=None):
        """Transform series.

        Parameters
        ----------
        Z : pd.Series or pd.DataFrame
            The series to transform.

        Returns
        -------
        summary_value : pd.DataFrame
            DataFrame where series are instances (rows) and calculated summary
            values are treated as features (columns).
        """
        self.check_is_fitted()
        Z = check_series(Z)
        summary_value = self._transform(Z, X=X)
        return summary_value
Esempio n. 14
0
    def update(self, Z, X=None, update_params=False):
        """
        Update the parameters of the detrending estimator with new data

        Parameters
        ----------
        y_new : pd.Series
            New time series
        update_params : bool, optional (default=False)
            Update the parameters of the detrender model with

        Returns
        -------
        self : an instance of self
        """
        z = check_series(Z, enforce_univariate=True, allow_empty=True)
        self.forecaster_.update(z, X, update_params=update_params)
        return self
Esempio n. 15
0
    def transform(self, Z, X=None):
        """Tranform data.

        Parameters
        ----------
        Z: pd.Series
            Time series of length n_timepoints

        Returns
        -------
        Z: pd.Series
            Matrix Profile of time series as output with length as
            (n_timepoints-window_length+1)
        """
        self.check_is_fitted()
        Z = check_series(Z, enforce_univariate=True)
        Z = stumpy.stump(Z, self.window_length)
        return pd.Series(Z[:, 0])
Esempio n. 16
0
    def inverse_transform(self, Z, X=None):
        """Inverse transform data.

        Parameters
        ----------
        Z : pd.Series
            Series to transform.
        X : pd.DataFrame, optional (default=None)
            Exogenous data used in transformation.

        Returns
        -------
        Zt : pd.Series
            Transformed data - the inverse of the Box-Cox transformation.
        """
        self.check_is_fitted()
        Z = check_series(Z)
        return np.exp(Z)
Esempio n. 17
0
    def fit(self, Z, X=None):
        """Fit the transformation on input series `Z`.

        Parameters
        ----------
        Z : pd.Series or pd.DataFrame
            A time series to apply the specified transformation on.

        Returns
        -------
        self
        """
        Z = check_series(Z)

        self._fit(Z, X=X)

        self._is_fitted = True
        return self
Esempio n. 18
0
    def inverse_transform(self, Z, X=None):
        """Inverse transform data.
        Returns a transformed version of y.

        Parameters
        ----------
        y : pd.Series
        X : pd.DataFrame

        Returns
        -------
        yt : pd.Series
            Transformed time series.
        """
        self.check_is_fitted()
        z = check_series(Z, enforce_univariate=True)
        seasonal = self._align_seasonal(z)
        return self._inverse_transform(z, seasonal)
Esempio n. 19
0
    def _transform(self, Z, X=None):
        """Transform data.

        Parameters
        ----------
        Z : pd.Series
            Series to transform.
        X : pd.DataFrame, optional (default=None)
            Exogenous data used in transformation.

        Returns
        -------
        Zt : pd.Series
            Transformed series.
        """
        z = check_series(Z, enforce_univariate=True)
        zt = boxcox(z.to_numpy(), self.lambda_)
        return pd.Series(zt, index=z.index)
Esempio n. 20
0
    def transform(self, Z, X=None):
        """Transform data.

        Parameters
        ----------
        Z : pd.Series
            Series to transform.
        X : pd.DataFrame, optional (default=None)
            Exogenous data used in transformation.

        Returns
        -------
        Zt : pd.Series
            Transformed series.
        """
        self.check_is_fitted()
        Z = check_series(Z)
        return np.log(Z)
Esempio n. 21
0
    def transform(self, Z, X=None):
        """Transform data.

        Returns a transformed version of y.

        Parameters
        ----------
        y : pd.Series
        X : pd.DataFrame

        Returns
        -------
        yt : pd.Series
            Transformed time series.
        """
        self.check_is_fitted()
        z = check_series(Z, enforce_univariate=True)
        return self._transform(z)
Esempio n. 22
0
    def transform(self, Z, X=None):
        """Transform data.

        Parameters
        ----------
        Z : pd.Series / pd.DataFrame
            Series / DataFrame to transform.
        X : pd.DataFrame, optional (default=None)
            Exogenous data used in transformation.

        Returns
        -------
        Zt : pd.Series / pd.DataFrame
            Transformed data.
        """
        self.check_is_fitted()
        Z = check_series(Z)
        return self._apply_function(Z, func=self.func, kw_args=self.kw_args)
Esempio n. 23
0
    def fit(self, Z, X=None):
        """Fit to data.

        Parameters
        ----------
        Z : pd.Series
        X : pd.DataFrame

        Returns
        -------
        self : an instance of self
        """
        self._is_fitted = False
        z = check_series(Z, enforce_univariate=True)
        self._set_y_len(z)
        self._set_y_index(z)
        sp = check_sp(self.sp)

        if sp > 1:
            # apply seasonal decomposition
            _seasonalizer = _STL(
                z.values,
                period=sp,
                seasonal=self.seasonal,
                trend=self.trend,
                low_pass=self.low_pass,
                seasonal_deg=self.seasonal_deg,
                trend_deg=self.trend_deg,
                low_pass_deg=self.low_pass_deg,
                robust=self.robust,
                seasonal_jump=self.seasonal_jump,
                trend_jump=self.trend_jump,
                low_pass_jump=self.low_pass_jump,
            ).fit()
            self.stl_model = _seasonalizer
            self.seasonal_ = self.stl_model.seasonal
        else:
            self.stl_model = None
            self.seasonal_ = np.zeros_like(z.values)

        self.seasonal_ = pd.Series(self.seasonal_, index=Z.index)
        self._is_fitted = True
        return self
Esempio n. 24
0
    def fit(self, Z, X=None):
        """Fit to data.

        Parameters
        ----------
        y_train : pd.Series

        Returns
        -------
        self : an instance of self
        """

        z = check_series(Z, enforce_univariate=True)
        self._set_y_index(z)
        sp = check_sp(self.sp)

        # set default condition
        if self.seasonality_test is None:
            self.seasonality_test_ = autocorrelation_seasonality_test
        else:
            self.seasonality_test_ = self.seasonality_test

        # check if data meets condition
        self.is_seasonal_ = self._check_condition(z)

        if self.is_seasonal_:
            # if condition is met, apply de-seasonalisation
            self.seasonal_ = seasonal_decompose(
                z,
                model=self.model,
                period=sp,
                filt=None,
                two_sided=True,
                extrapolate_trend=0,
            ).seasonal.iloc[:sp]
        else:
            # otherwise, set idempotent seasonal components
            self.seasonal_ = (
                np.zeros(self.sp) if self.model == "additive" else np.ones(self.sp)
            )

        self._is_fitted = True
        return self
Esempio n. 25
0
    def transform(self, X, y=None):
        """
        Takes as input a single time series dataset and returns the matrix profile
        for that time series dataset.

        Parameters
        ----------
        X: pandas.Series
           Time series dataset(lets say of length=n)

        Returns
        -------
        Xt: pandas.Series
            Matrix Profile of time series as output with length as (n-window_length+1)
        """
        self.check_is_fitted()
        X = check_series(X, enforce_univariate=True)
        Xt = stumpy.stump(X, self.window_length)
        return pd.Series(Xt[:, 0])
Esempio n. 26
0
    def inverse_transform(self, Z, X=None):
        """Inverse transform data.

        Parameters
        ----------
        Z : pd.Series
            Series to transform.
        X : pd.DataFrame, optional (default=None)
            Exogenous data used in transformation.

        Returns
        -------
        Zt : pd.Series
            Transformed data - the inverse of the Box-Cox transformation.
        """
        self.check_is_fitted()
        z = check_series(Z, enforce_univariate=True)
        zt = inv_boxcox(z.to_numpy(), self.lambda_)
        return pd.Series(zt, index=z.index)
Esempio n. 27
0
    def transform(self, Z, X=None):
        """Transform data.

        Returns a transformed version yt of y. The seasonal component is removed from y.
        The trend and residual components can be accessed via
        the attributes trend_ and resid_ for the fitted data.

        Parameters
        ----------
        y : pd.Series
        X : pd.DataFrame

        Returns
        -------
        yt : pd.Series
        """
        self.check_is_fitted()
        z = check_series(Z, enforce_univariate=True)
        return self._transform(z)
Esempio n. 28
0
    def inverse_transform(self, Z, X=None):
        """Inverse transform data.

        Parameters
        ----------
        Z : pd.Series
            Series to transform.
        X : pd.DataFrame, optional (default=None)
            Exogenous data used in transformation.

        Returns
        -------
        z : pd.Series
            Inverse transformed data.
        """
        self.check_is_fitted()
        z = check_series(Z, enforce_univariate=False)
        if not self.passthrough:
            z = self.transformer_.inverse_transform(z, X=X)
        return z
Esempio n. 29
0
    def fit(self, Z, X=None):
        """
        Compute the trend in the series

        Parameters
        ----------
        Y : pd.Series
            Endogenous time series to fit a trend to.
        X : pd.DataFrame, optional (default=None)
            Exogenous variables

        Returns
        -------
        self : an instance of self
        """
        z = check_series(Z, enforce_univariate=True)
        forecaster = clone(self.forecaster)
        self.forecaster_ = forecaster.fit(z, X)
        self._is_fitted = True
        return self
Esempio n. 30
0
    def transform(self, Z, X=None):
        """Return transformed version of input series `Z`.

        Parameters
        ----------
        Z : pd.Series or pd.DataFrame
            A time series to apply the transformation on.
        X : pd.DataFrame, default=None
            Exogenous data used in transformation.

        Returns
        -------
        Zt : pd.Series or pd.DataFrame
            Transformed version of input series `Z`.
        """
        self.check_is_fitted()
        zt = check_series(Z)
        for _, _, transformer in self._iter_transformers():
            zt = transformer.transform(zt, X)
        return zt