summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Glisse <marc.glisse@inria.fr>2019-11-21 22:50:05 +0100
committerMarc Glisse <marc.glisse@inria.fr>2019-11-21 22:50:05 +0100
commit84299342910d18aeaa1a605fe224bede13d647dc (patch)
treecc9176e3f0a4617299ee4177bbad87d1f0b7c135
parent96c90dd002e7d4f30ce3d0f3ddf45fbfd03fc01a (diff)
Generalize Clamping to min and max
Fix #146.
-rwxr-xr-xsrc/python/example/diagram_vectorizations_distances_kernels.py2
-rw-r--r--src/python/gudhi/representations/preprocessing.py8
2 files changed, 5 insertions, 5 deletions
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):