From 84299342910d18aeaa1a605fe224bede13d647dc Mon Sep 17 00:00:00 2001 From: Marc Glisse Date: Thu, 21 Nov 2019 22:50:05 +0100 Subject: Generalize Clamping to min and max Fix #146. --- src/python/example/diagram_vectorizations_distances_kernels.py | 2 +- src/python/gudhi/representations/preprocessing.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/python/example/diagram_vectorizations_distances_kernels.py b/src/python/example/diagram_vectorizations_distances_kernels.py index a77bbfdd..119072eb 100755 --- a/src/python/example/diagram_vectorizations_distances_kernels.py +++ b/src/python/example/diagram_vectorizations_distances_kernels.py @@ -16,7 +16,7 @@ diags = [D] diags = DiagramSelector(use=True, point_type="finite").fit_transform(diags) diags = DiagramScaler(use=True, scalers=[([0,1], MinMaxScaler())]).fit_transform(diags) -diags = DiagramScaler(use=True, scalers=[([1], Clamping(limit=.9))]).fit_transform(diags) +diags = DiagramScaler(use=True, scalers=[([1], Clamping(maximum=.9))]).fit_transform(diags) D = diags[0] plt.scatter(D[:,0],D[:,1]) diff --git a/src/python/gudhi/representations/preprocessing.py b/src/python/gudhi/representations/preprocessing.py index 487b5376..a39b00e4 100644 --- a/src/python/gudhi/representations/preprocessing.py +++ b/src/python/gudhi/representations/preprocessing.py @@ -58,14 +58,15 @@ class Clamping(BaseEstimator, TransformerMixin): """ This is a class for clamping values. It can be used as a parameter for the DiagramScaler class, for instance if you want to clamp abscissae or ordinates of persistence diagrams. """ - def __init__(self, limit=np.inf): + def __init__(self, minimum=-np.inf, maximum=np.inf): """ Constructor for the Clamping class. Parameters: limit (double): clamping value (default np.inf). """ - self.limit = limit + self.minimum = minimum + self.maximum = maximum def fit(self, X, y=None): """ @@ -87,8 +88,7 @@ class Clamping(BaseEstimator, TransformerMixin): Returns: numpy array of size n: output list of values. """ - Xfit = np.minimum(X, self.limit) - #Xfit = np.where(X >= self.limit, self.limit * np.ones(X.shape), X) + Xfit = np.clip(X, self.minimum, self.maximum) return Xfit class DiagramScaler(BaseEstimator, TransformerMixin): -- cgit v1.2.3