Repository: incubator-hivemall
Updated Branches:
  refs/heads/master bcae1534a -> 50867c178


Close #46: [HIVEMALL-72] Fix corner-case rescale UDF behavior to return range 
[0.0,1.0]


Project: http://git-wip-us.apache.org/repos/asf/incubator-hivemall/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-hivemall/commit/50867c17
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hivemall/tree/50867c17
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hivemall/diff/50867c17

Branch: refs/heads/master
Commit: 50867c178784bee74bbb0abcc8209266e7665764
Parents: bcae153
Author: Makoto Yui <yuin...@gmail.com>
Authored: Fri Feb 17 19:05:19 2017 +0900
Committer: myui <yuin...@gmail.com>
Committed: Fri Feb 17 19:05:19 2017 +0900

----------------------------------------------------------------------
 .../src/main/java/hivemall/ftvec/scaling/RescaleUDF.java |  6 ++++++
 .../test/java/hivemall/ftvec/scaling/RescaleUDFTest.java | 11 ++++++++++-
 2 files changed, 16 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-hivemall/blob/50867c17/core/src/main/java/hivemall/ftvec/scaling/RescaleUDF.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/hivemall/ftvec/scaling/RescaleUDF.java 
b/core/src/main/java/hivemall/ftvec/scaling/RescaleUDF.java
index a3e4799..a73150c 100644
--- a/core/src/main/java/hivemall/ftvec/scaling/RescaleUDF.java
+++ b/core/src/main/java/hivemall/ftvec/scaling/RescaleUDF.java
@@ -106,6 +106,12 @@ public final class RescaleUDF extends UDF {
         if (min == max) {
             return 0.5f;
         }
+        if (value < min) {
+            return 0.f;
+        }
+        if (value > max) {
+            return 1.f;
+        }
         return (value - min) / (max - min);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-hivemall/blob/50867c17/core/src/test/java/hivemall/ftvec/scaling/RescaleUDFTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/hivemall/ftvec/scaling/RescaleUDFTest.java 
b/core/src/test/java/hivemall/ftvec/scaling/RescaleUDFTest.java
index 887511f..a132ede 100644
--- a/core/src/test/java/hivemall/ftvec/scaling/RescaleUDFTest.java
+++ b/core/src/test/java/hivemall/ftvec/scaling/RescaleUDFTest.java
@@ -87,8 +87,17 @@ public class RescaleUDFTest {
         udf.evaluate("1:string", 0.1d, 0.1d);
     }
 
+    @Test
     public void testMinMaxEquals() throws Exception {
-        udf.evaluate(0.1d, 0.1d, 0.1d);
+        assertEquals(WritableUtils.val(0.5f), udf.evaluate(0.1d, 0.1d, 0.1d));
+    }
+
+    @Test
+    public void testMinMaxCornercase() throws Exception {
+        assertEquals(WritableUtils.val(1.0f), udf.evaluate(1.1f, 0.0f, 1.0f));
+        assertEquals(WritableUtils.val(0.0f), udf.evaluate(-0.1f, 0.0f, 1.0f));
+        assertEquals(WritableUtils.val(1.0f), udf.evaluate(4.1f, 0.0f, 3.0f));
+        assertEquals(WritableUtils.val(0.0f), udf.evaluate(-2.1f, -1.0f, 
1.0f));
     }
 
     @Test(expected = HiveException.class)

Reply via email to