def transform(self, X, y=None): """Concatenate multivariate time series/panel data into long univariate time series/panel data by simply concatenating times series in time. Parameters ---------- X : nested pandas DataFrame of shape [n_samples, n_features] Nested dataframe with time-series in cells. Returns ------- Xt : pandas DataFrame Transformed pandas DataFrame with same number of rows and single column """ self.check_is_fitted() X = check_X(X) # We concatenate by tabularizing all columns and then detabularizing # them into a single column if isinstance(X, pd.DataFrame): Xt = from_nested_to_2d_array(X) else: Xt = from_3d_numpy_to_2d_array(X) return from_2d_array_to_nested(Xt)
def fit(self, X, y=None): """Fit dilations and biases to input time series. Parameters ---------- X : pandas DataFrame, input time series (sktime format) y : array_like, target values (optional, ignored as irrelevant) Returns ------- self """ _X = check_X(X, enforce_univariate=True, coerce_to_numpy=True) _X = _X[:, 0, :].astype(np.float64) _X = from_3d_numpy_to_2d_array(_X) if self.normalise: _X = (_X - _X.mean(axis=-1, keepdims=True)) / ( _X.std(axis=-1, keepdims=True) + 1e-8) self.parameter = self._get_parameter(_X) _X1 = np.diff(_X, 1) self.parameter1 = self._get_parameter(_X1) self._is_fitted = True return self
def transform(self, X, y=None): """Transform input time series using random convolutional kernels. Parameters ---------- X : pandas DataFrame, input time series (sktime format) y : array_like, target values (optional, ignored as irrelevant) Returns ------- pandas DataFrame, transformed features """ self.check_is_fitted() _X = check_X(X, enforce_univariate=True, coerce_to_numpy=True) _X = _X[:, 0, :].astype(np.float64) _X = from_3d_numpy_to_2d_array(_X) if self.normalise: _X = (_X - _X.mean(axis=-1, keepdims=True)) / ( _X.std(axis=-1, keepdims=True) + 1e-8) X1 = np.diff(_X, 1) # change n_jobs dependend on value and existing cores prev_threads = get_num_threads() if self.n_jobs < 1 or self.n_jobs > multiprocessing.cpu_count(): n_jobs = multiprocessing.cpu_count() else: n_jobs = self.n_jobs set_num_threads(n_jobs) _X = _transform( _X, X1, self.parameter, self.parameter1, self.n_features_per_kernel, ) _X = np.nan_to_num(_X) set_num_threads(prev_threads) # # from_2d_array_to_3d_numpy # _X = np.reshape(_X, (_X.shape[0], 1, _X.shape[1])).astype(np.float64) return pd.DataFrame(_X)
def transform(self, X, y=None): """Transform nested pandas dataframe into tabular dataframe. Parameters ---------- X : pandas DataFrame Nested dataframe with pandas series or numpy arrays in cells. y : array-like, optional (default=None) Returns ------- Xt : pandas DataFrame Transformed dataframe with only primitives in cells. """ self.check_is_fitted() X = check_X(X) if isinstance(X, pd.DataFrame): return from_nested_to_2d_array(X) else: return from_3d_numpy_to_2d_array(X)
def test_from_3d_numpy_to_2d_array(n_instances, n_columns, n_timepoints): """Test from_3d_numpy_to_2d_array for correctness.""" array = np.random.normal(size=(n_instances, n_columns, n_timepoints)) array_2d = from_3d_numpy_to_2d_array(array) assert array_2d.shape == (n_instances, n_columns * n_timepoints)