From 742bd209c7fd5fc82c65a86a1b28de2470db018b Mon Sep 17 00:00:00 2001 From: Peter Rudenko Date: Tue, 14 Apr 2015 18:12:22 +0300 Subject: [PATCH 1/3] [SPARK-6901][Ml]ParamGridBuilder.build with no grids should return an empty array --- .../scala/org/apache/spark/ml/tuning/ParamGridBuilder.scala | 5 +++-- .../org/apache/spark/ml/tuning/ParamGridBuilderSuite.scala | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/mllib/src/main/scala/org/apache/spark/ml/tuning/ParamGridBuilder.scala b/mllib/src/main/scala/org/apache/spark/ml/tuning/ParamGridBuilder.scala index dafe73d82c00a..0ccd87faf30ca 100644 --- a/mllib/src/main/scala/org/apache/spark/ml/tuning/ParamGridBuilder.scala +++ b/mllib/src/main/scala/org/apache/spark/ml/tuning/ParamGridBuilder.scala @@ -100,10 +100,11 @@ class ParamGridBuilder { * Builds and returns all combinations of parameters specified by the param grid. */ def build(): Array[ParamMap] = { - var paramMaps = Array(new ParamMap) + var paramMaps = Array.empty[ParamMap] paramGrid.foreach { case (param, values) => val newParamMaps = values.flatMap { v => - paramMaps.map(_.copy.put(param.asInstanceOf[Param[Any]], v)) + {if (paramMaps.isEmpty) Array(new ParamMap) else paramMaps} + .map(_.copy.put(param.asInstanceOf[Param[Any]], v)) } paramMaps = newParamMaps.toArray } diff --git a/mllib/src/test/scala/org/apache/spark/ml/tuning/ParamGridBuilderSuite.scala b/mllib/src/test/scala/org/apache/spark/ml/tuning/ParamGridBuilderSuite.scala index 20aa100112bfe..f4533f0dff98f 100644 --- a/mllib/src/test/scala/org/apache/spark/ml/tuning/ParamGridBuilderSuite.scala +++ b/mllib/src/test/scala/org/apache/spark/ml/tuning/ParamGridBuilderSuite.scala @@ -59,5 +59,9 @@ class ParamGridBuilderSuite extends FunSuite { (10, "input1"), (20, "input1")) validateGrid(maps1, expected1) + + val maps2 = (new ParamGridBuilder()).build() + val expected2 = mutable.Set.empty[(Int, String)] + validateGrid(maps2, expected2) } } From 94cfaa7053d5a732bdae21d4412d771c36a30391 Mon Sep 17 00:00:00 2001 From: Peter Rudenko Date: Tue, 14 Apr 2015 18:59:15 +0300 Subject: [PATCH 2/3] Code cosmit --- .../spark/ml/tuning/ParamGridBuilder.scala | 16 +++++++++------- .../spark/ml/tuning/ParamGridBuilderSuite.scala | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/mllib/src/main/scala/org/apache/spark/ml/tuning/ParamGridBuilder.scala b/mllib/src/main/scala/org/apache/spark/ml/tuning/ParamGridBuilder.scala index 0ccd87faf30ca..3131b6aa38735 100644 --- a/mllib/src/main/scala/org/apache/spark/ml/tuning/ParamGridBuilder.scala +++ b/mllib/src/main/scala/org/apache/spark/ml/tuning/ParamGridBuilder.scala @@ -100,14 +100,16 @@ class ParamGridBuilder { * Builds and returns all combinations of parameters specified by the param grid. */ def build(): Array[ParamMap] = { - var paramMaps = Array.empty[ParamMap] - paramGrid.foreach { case (param, values) => - val newParamMaps = values.flatMap { v => - {if (paramMaps.isEmpty) Array(new ParamMap) else paramMaps} - .map(_.copy.put(param.asInstanceOf[Param[Any]], v)) + if (paramGrid.isEmpty) Array.empty[ParamMap] + else { + var paramMaps = Array(new ParamMap) + paramGrid.foreach { case (param, values) => + val newParamMaps = values.flatMap { v => + paramMaps.map(_.copy.put(param.asInstanceOf[Param[Any]], v)) + } + paramMaps = newParamMaps.toArray } - paramMaps = newParamMaps.toArray + paramMaps } - paramMaps } } diff --git a/mllib/src/test/scala/org/apache/spark/ml/tuning/ParamGridBuilderSuite.scala b/mllib/src/test/scala/org/apache/spark/ml/tuning/ParamGridBuilderSuite.scala index f4533f0dff98f..984f875834e52 100644 --- a/mllib/src/test/scala/org/apache/spark/ml/tuning/ParamGridBuilderSuite.scala +++ b/mllib/src/test/scala/org/apache/spark/ml/tuning/ParamGridBuilderSuite.scala @@ -60,7 +60,7 @@ class ParamGridBuilderSuite extends FunSuite { (20, "input1")) validateGrid(maps1, expected1) - val maps2 = (new ParamGridBuilder()).build() + val maps2 = new ParamGridBuilder().build() val expected2 = mutable.Set.empty[(Int, String)] validateGrid(maps2, expected2) } From 7d432f158915117b3b3444d1356d76f8ae21cba0 Mon Sep 17 00:00:00 2001 From: Peter Rudenko Date: Wed, 15 Apr 2015 15:20:43 +0300 Subject: [PATCH 3/3] Style fix --- .../scala/org/apache/spark/ml/tuning/ParamGridBuilder.scala | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mllib/src/main/scala/org/apache/spark/ml/tuning/ParamGridBuilder.scala b/mllib/src/main/scala/org/apache/spark/ml/tuning/ParamGridBuilder.scala index 3131b6aa38735..c098b79b51c4c 100644 --- a/mllib/src/main/scala/org/apache/spark/ml/tuning/ParamGridBuilder.scala +++ b/mllib/src/main/scala/org/apache/spark/ml/tuning/ParamGridBuilder.scala @@ -100,8 +100,9 @@ class ParamGridBuilder { * Builds and returns all combinations of parameters specified by the param grid. */ def build(): Array[ParamMap] = { - if (paramGrid.isEmpty) Array.empty[ParamMap] - else { + if (paramGrid.isEmpty) { + Array.empty[ParamMap] + } else { var paramMaps = Array(new ParamMap) paramGrid.foreach { case (param, values) => val newParamMaps = values.flatMap { v =>