From 407ba04f370ebed611a746f057ac43f5385984e4 Mon Sep 17 00:00:00 2001
From: Le Roux Erwan <erwan.le-roux@irstea.fr>
Date: Mon, 20 May 2019 16:53:51 +0200
Subject: [PATCH] [COORDINATE][STANDARD NORMALIZATION] add standard
 normalization. and add test.

---
 .../transformation/abstract_transformation.py      |  6 +++---
 .../test_transformation.py                         | 14 +++++++++-----
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/spatio_temporal_dataset/coordinates/transformed_coordinates/transformation/abstract_transformation.py b/spatio_temporal_dataset/coordinates/transformed_coordinates/transformation/abstract_transformation.py
index aaa82a54..e6a5012b 100644
--- a/spatio_temporal_dataset/coordinates/transformed_coordinates/transformation/abstract_transformation.py
+++ b/spatio_temporal_dataset/coordinates/transformed_coordinates/transformation/abstract_transformation.py
@@ -1,6 +1,6 @@
 import pandas as pd
 import numpy as np
-from sklearn.preprocessing import Normalizer
+from sklearn.preprocessing import Normalizer, StandardScaler
 
 
 class AbstractTransformation(object):
@@ -37,9 +37,9 @@ class CenteredScaledNormalization(AbstractTransformation):
     def __init__(self, df_coordinates):
         super().__init__(df_coordinates)
         assert self.nb_dimensions == 1
-        self.transformer = Normalizer().fit(df_coordinates.transpose().values.reshape(-1, 1))
+        self.scaler = StandardScaler().fit(df_coordinates.transpose().values.reshape(-1, 1))
 
     def transform_array(self, coordinate: np.ndarray):
-        return self.transformer.transform(np.array([coordinate]))[0]
+        return self.scaler.transform(np.array([coordinate]))[0]
 
 
diff --git a/test/test_spatio_temporal_dataset/test_transformation.py b/test/test_spatio_temporal_dataset/test_transformation.py
index 96ed89ca..bbce7051 100644
--- a/test/test_spatio_temporal_dataset/test_transformation.py
+++ b/test/test_spatio_temporal_dataset/test_transformation.py
@@ -6,6 +6,8 @@ from spatio_temporal_dataset.coordinates.spatio_temporal_coordinates.generated_s
     GeneratedSpatioTemporalCoordinates, UniformSpatioTemporalCoordinates
 from spatio_temporal_dataset.coordinates.temporal_coordinates.generated_temporal_coordinates import \
     ConsecutiveTemporalCoordinates
+from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation.abstract_transformation import \
+    CenteredScaledNormalization
 from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation.uniform_normalization import \
     BetweenZeroAndOneNormalization, BetweenMinusOneAndOneNormalization
 
@@ -15,17 +17,19 @@ class TestTransformation(unittest.TestCase):
     def test_temporal_normalization(self):
         nb_steps = 3
         start = 1950
-        transformation_class_to_expected = {BetweenZeroAndOneNormalization: [0.0, 0.5, 1.0],
-                                            BetweenMinusOneAndOneNormalization: [-1.0, 0.0, 1.0]}
+        transformation_class_to_expected = {
+            BetweenZeroAndOneNormalization: [0.0, 0.5, 1.0],
+            BetweenMinusOneAndOneNormalization: [-1.0, 0.0, 1.0],
+            CenteredScaledNormalization: [-1.22474487, 0., 1.22474487],
+        }
         for transformation_class, expected in transformation_class_to_expected.items():
             temporal_coordinates = ConsecutiveTemporalCoordinates.from_nb_temporal_steps(nb_temporal_steps=nb_steps,
                                                                                          start=start,
                                                                                          transformation_class=transformation_class)
             normalized_coordinates = temporal_coordinates.df_coordinates().iloc[:, 0].values
             expected_coordinates = np.array(expected)
-            equals = normalized_coordinates == expected_coordinates
-            self.assertTrue(equals.all(),
-                            msg="expected: {}, res:{}".format(expected_coordinates, normalized_coordinates))
+            equal = np.allclose(normalized_coordinates , expected_coordinates)
+            self.assertTrue(equal, msg="expected: {}, res:{}".format(expected_coordinates, normalized_coordinates))
 
     def test_spatio_temporal_normalization(self):
 
-- 
GitLab