def test_minmax(): # Pick linguistic features for testing X, _ = example_file_data_sources_for_acoustic_model() X = FileSourceDataset(X) lengths = [len(x) for x in X] D = X[0].shape[-1] X_min, X_max = P.minmax(X) assert np.isfinite(X_min).all() assert np.isfinite(X_max).all() x = X[0] x_scaled = P.minmax_scale(x, X_min, X_max, feature_range=(0, 0.99)) assert np.max(x_scaled) <= 1 assert np.min(x_scaled) >= 0 assert np.isfinite(x_scaled).all() # Need to specify (min, max) or (scale_, min_) @raises(ValueError) def __test_raise1(x, X_min, X_max): P.minmax_scale(x) @raises(ValueError) def __test_raise2(x, X_min, X_max): P.inv_minmax_scale(x) __test_raise1(x, X_min, X_max) __test_raise2(x, X_min, X_max) # Explicit scale_ and min_ min_, scale_ = P.minmax_scale_params(X_min, X_max, feature_range=(0, 0.99)) x_scaled_hat = P.minmax_scale(x, min_=min_, scale_=scale_) assert np.allclose(x_scaled, x_scaled_hat) # For padded dataset X, _ = example_file_data_sources_for_acoustic_model() X = PaddedFileSourceDataset(X, 1000) # Should get same results with padded features X_min_hat, X_max_hat = P.minmax(X, lengths) assert np.allclose(X_min, X_min_hat) assert np.allclose(X_max, X_max_hat) # Inverse transform x = X[0] x_hat = P.inv_minmax_scale(P.minmax_scale(x, X_min, X_max), X_min, X_max) assert np.allclose(x, x_hat) x_hat = P.inv_minmax_scale(P.minmax_scale(x, scale_=scale_, min_=min_), scale_=scale_, min_=min_) assert np.allclose(x, x_hat)
def __test_raise2(x, X_min, X_max): P.inv_minmax_scale(x)