def test_takens_embedding_3D_no_flatten(): """Test the return values of TakensEmbedding on 3D input or list of 2D input, with `flatten` set to ``False``.""" signals = np.arange(20).reshape(2, 2, 5) TE = TakensEmbedding(flatten=False) signals_emb = TE.fit_transform(signals) signals_emb_list = TE.fit_transform(list(signals)) signals_emb_exp = np.array([[[[0, 1], [1, 2], [2, 3], [3, 4]], [[5, 6], [6, 7], [7, 8], [8, 9]]], [[[10, 11], [11, 12], [12, 13], [13, 14]], [[15, 16], [16, 17], [17, 18], [18, 19]]]]) assert np.array_equal(signals_emb, signals_emb_exp) assert np.array_equal(np.asarray(signals_emb_list), signals_emb_exp)
def test_takens_embedding_plot(): trace_params = {"mode": "lines+markers"} layout_params = {"title": "New title"} TE = TakensEmbedding() plotly_params = {"trace": trace_params, "layout": layout_params} TE.fit_transform_plot([np.arange(20)], sample=0, plotly_params=plotly_params)
def test_embedder_resample(): embedder = TakensEmbedding(parameters_type='fixed', time_delay=3, dimension=2, stride=3) embedder.fit(signal) y_resampled = embedder.resample(y) assert_almost_equal(y_resampled, y[np.arange(4, 20, 3)])
def test_takens_embedding_validation(params): if "flatten" not in params and "ensure_last_value" not in params: exception_type = ValueError else: exception_type = TypeError with pytest.raises(exception_type): TE = TakensEmbedding(**params) TE.fit(signal[None, :])
def tokens_embeddings_(self, X): X_transformed = list() for series in X: te = TakensEmbedding(parameters_type='search', dimension=self.tokens_embedding_dim_, time_delay=self.tokens_embedding_delay_, n_jobs=self.n_job) X_transformed.append(te.fit_transform(series)) return X_transformed
def test_takens_embedding_3D_default(): """Test the return values of TakensEmbedding on 3D input or list of 2D input, with default parameters.""" signals = np.arange(20).reshape(2, 2, 5) TE = TakensEmbedding() signals_emb = TE.fit_transform(signals) signals_emb_list = TE.fit_transform(list(signals)) signals_emb_exp = np.array([[[0, 1, 5, 6], [1, 2, 6, 7], [2, 3, 7, 8], [3, 4, 8, 9]], [[10, 11, 15, 16], [11, 12, 16, 17], [12, 13, 17, 18], [13, 14, 18, 19]]]) assert np.array_equal(signals_emb, signals_emb_exp) assert np.array_equal(np.asarray(signals_emb_list), signals_emb_exp)
def test_takens_embedding_2D(): """Test the return values of TakensEmbedding on 2D input or list of 1D input, with default parameters.""" signals = np.arange(10).reshape(2, 5) TE = TakensEmbedding() signals_emb = TE.fit_transform(signals) signals_emb_list = TE.fit_transform(list(signals)) signals_emb_exp = np.array([[[0, 1], [1, 2], [2, 3], [3, 4]], [[5, 6], [6, 7], [7, 8], [8, 9]]]) assert np.array_equal(signals_emb, signals_emb_exp) assert np.array_equal(np.asarray(signals_emb_list), signals_emb_exp)
def test_takens_embedding_consistent_with_single_takens_embedding( time_delay, dimension, stride ): """Test that TakensEmbedding and SingleTakensEmbedding give identical outputs (up to shape) on arrays representing single univariate time series.""" n_points = (len(signal) - time_delay * (dimension - 1) - 1) // stride + 1 single_embedder = SingleTakensEmbedding(parameters_type='fixed', time_delay=time_delay, dimension=dimension, stride=stride) embedder = TakensEmbedding(time_delay=time_delay, dimension=dimension, stride=stride) if n_points <= 0: with pytest.raises(ValueError): single_embedder.fit_transform(signal) with pytest.raises(ValueError): embedder.fit_transform(signal[None, :]) else: single_embedder_res = single_embedder.fit_transform(signal) embedder_res = embedder.fit_transform(signal[None, :])[0] assert np.array_equal(single_embedder_res, embedder_res)
def test_embedder_transform(parameters_type, expected): embedder = TakensEmbedding(parameters_type=parameters_type) assert_almost_equal(embedder.fit_transform(signal), expected)
def test_embedder_not_fitted(): embedder = TakensEmbedding() with pytest.raises(NotFittedError): embedder.transform(signal)
def test_embedder_params(): parameters_type = 'not_defined' embedder = TakensEmbedding(parameters_type=parameters_type) with pytest.raises(ValueError): embedder.fit(signal)
stride = 2 SW = SlidingWindow(size=window_size, stride=stride) X_sw, yr = SW.fit_transform_resample(X, y) X_sw, yr # In[11]: X, y # In[12]: time_delay = 1 dimension = 2 TE = TakensEmbedding(time_delay=time_delay, dimension=dimension) X_te = TE.fit_transform(X_sw) X_te # In[13]: VR = VietorisRipsPersistence() # No "precomputed" for point clouds Ampl = Amplitude() RFR = RandomForestRegressor() pipe = make_pipeline(SW, TE, VR, Ampl, RFR) pipe # In[14]: pipe.fit(X, y)
def test_takens_embedding_plot(): TE = TakensEmbedding() _ = TE.fit_transform_plot([np.arange(20)], sample=0)