def test_bad_input_args(bad_num_intervals): X = _make_nested_from_array(np.ones(10), n_instances=10, n_columns=1) if not isinstance(bad_num_intervals, int): with pytest.raises(TypeError): PAA(num_intervals=bad_num_intervals).fit(X).transform(X) else: with pytest.raises(ValueError): PAA(num_intervals=bad_num_intervals).fit(X).transform(X)
def test_paa_performs_correcly_along_each_dim(): X = _make_nested_from_array(np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), n_instances=1, n_columns=2) p = PAA(num_intervals=3).fit(X) res = p.transform(X) orig = convert_list_to_dataframe([[2.2, 5.5, 8.8], [2.2, 5.5, 8.8]]) orig.columns = X.columns assert check_if_dataframes_are_equal(res, orig)
def test_output_of_transformer(): X = _make_nested_from_array(np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), n_instances=1, n_columns=1) p = PAA(num_intervals=3).fit(X) res = p.transform(X) orig = convert_list_to_dataframe([[2.2, 5.5, 8.8]]) orig.columns = X.columns assert check_if_dataframes_are_equal(res, orig)
def test_output_dimensions(): # test with univariate X = _make_nested_from_array(np.ones(12), n_instances=10, n_columns=1) p = PAA(num_intervals=5).fit(X) res = p.transform(X) # get the dimension of the generated dataframe. corr_time_series_length = res.iloc[0, 0].shape[0] num_rows = res.shape[0] num_cols = res.shape[1] assert corr_time_series_length == 5 assert num_rows == 10 assert num_cols == 1 # test with multivariate X = _make_nested_from_array(np.ones(12), n_instances=10, n_columns=5) p = PAA(num_intervals=5).fit(X) res = p.transform(X) # get the dimension of the generated dataframe. corr_time_series_length = res.iloc[0, 0].shape[0] num_rows = res.shape[0] num_cols = res.shape[1] assert corr_time_series_length == 5 assert num_rows == 10 assert num_cols == 5
def _get_transformer(self, tName): """ Function to extract the appropriate transformer Parameters ------- self : the ShapeDTW object. tName : the name of the required transformer. Returns ------- output : Base Transformer object corresponding to the class (or classes if its a compound transformer) of the required transformer. The transformer is configured with the parameters given in self.metric_params. throws : ValueError if a shape descriptor doesn't exist. """ parameters = self.metric_params tName = tName.lower() if parameters is None: parameters = {} parameters = {k.lower(): v for k, v in parameters.items()} self._check_metric_params(parameters) if tName == "raw": return None elif tName == "paa": num_intervals = parameters.get("num_intervals_paa") if num_intervals is None: return PAA() return PAA(num_intervals) elif tName == "dwt": num_levels = parameters.get("num_levels_dwt") if num_levels is None: return DWTTransformer() return DWTTransformer(num_levels) elif tName == "slope": num_intervals = parameters.get("num_intervals_slope") if num_intervals is None: return SlopeTransformer() return SlopeTransformer(num_intervals) elif tName == "derivative": return DerivativeSlopeTransformer() elif tName == "hog1d": num_intervals = parameters.get("num_intervals_hog1d") num_bins = parameters.get("num_bins_hog1d") scaling_factor = parameters.get("scaling_factor_hog1d") # All 3 paramaters are None if num_intervals is None and num_bins is None and \ scaling_factor is None: return HOG1DTransformer() # 2 parameters are None if num_intervals is None and num_bins is None: return HOG1DTransformer(scaling_factor=scaling_factor) if num_intervals is None and scaling_factor is None: return HOG1DTransformer(num_bins=num_bins) if num_bins is None and scaling_factor is None: return HOG1DTransformer(num_intervals=num_intervals) # 1 parameter is None if num_intervals is None: return HOG1DTransformer(scaling_factor=scaling_factor, num_bins=num_bins) if scaling_factor is None: return HOG1DTransformer(num_intervals=num_intervals, num_bins=num_bins) if num_bins is None: return HOG1DTransformer(scaling_factor=scaling_factor, num_intervals=num_intervals) # All parameters are given return HOG1DTransformer(num_intervals=num_intervals, num_bins=num_bins, scaling_factor=scaling_factor) else: raise ValueError("Invalid shape desciptor function.")