You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by ap...@apache.org on 2016/04/22 22:41:15 UTC
mahout git commit: MAHOUT-1833: Enhance svec function to accept
cardinality as parameter. closes apache/mahout#224
Repository: mahout
Updated Branches:
refs/heads/master bedcc3fbe -> add081015
MAHOUT-1833: Enhance svec function to accept cardinality as parameter. closes apache/mahout#224
Project: http://git-wip-us.apache.org/repos/asf/mahout/repo
Commit: http://git-wip-us.apache.org/repos/asf/mahout/commit/add08101
Tree: http://git-wip-us.apache.org/repos/asf/mahout/tree/add08101
Diff: http://git-wip-us.apache.org/repos/asf/mahout/diff/add08101
Branch: refs/heads/master
Commit: add081015e9b7c9c4a3a47f084a21680f7c2be7d
Parents: bedcc3f
Author: yougoer <yo...@yougoer.com>
Authored: Fri Apr 22 16:33:55 2016 -0400
Committer: Andrew Palumbo <ap...@apache.org>
Committed: Fri Apr 22 16:33:55 2016 -0400
----------------------------------------------------------------------
.../apache/mahout/math/scalabindings/package.scala | 16 ++++++++++++----
.../mahout/math/scalabindings/VectorOpsSuite.scala | 11 +++++++++++
2 files changed, 23 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mahout/blob/add08101/math-scala/src/main/scala/org/apache/mahout/math/scalabindings/package.scala
----------------------------------------------------------------------
diff --git a/math-scala/src/main/scala/org/apache/mahout/math/scalabindings/package.scala b/math-scala/src/main/scala/org/apache/mahout/math/scalabindings/package.scala
index 6a3aa06..10c534b 100644
--- a/math-scala/src/main/scala/org/apache/mahout/math/scalabindings/package.scala
+++ b/math-scala/src/main/scala/org/apache/mahout/math/scalabindings/package.scala
@@ -198,13 +198,21 @@ package object scalabindings {
/**
* create a sparse vector out of list of tuple2's
- * @param sdata
+ * @param sdata cardinality
* @return
*/
- def svec(sdata: TraversableOnce[(Int, AnyVal)]) = {
- val cardinality = if (sdata.nonEmpty) sdata.map(_._1).max + 1 else 0
+ def svec(sdata: TraversableOnce[(Int, AnyVal)], cardinality: Int = -1) = {
+ val required = if (sdata.nonEmpty) sdata.map(_._1).max + 1 else 0
+ var tmp = -1
+ if (cardinality < 0) {
+ tmp = required
+ } else if (cardinality < required) {
+ throw new IllegalArgumentException(s"Required cardinality %required but got %cardinality")
+ } else {
+ tmp = cardinality
+ }
val initialCapacity = sdata.size
- val sv = new RandomAccessSparseVector(cardinality, initialCapacity)
+ val sv = new RandomAccessSparseVector(tmp, initialCapacity)
sdata.foreach(t ⇒ sv.setQuick(t._1, t._2.asInstanceOf[Number].doubleValue()))
sv
}
http://git-wip-us.apache.org/repos/asf/mahout/blob/add08101/math-scala/src/test/scala/org/apache/mahout/math/scalabindings/VectorOpsSuite.scala
----------------------------------------------------------------------
diff --git a/math-scala/src/test/scala/org/apache/mahout/math/scalabindings/VectorOpsSuite.scala b/math-scala/src/test/scala/org/apache/mahout/math/scalabindings/VectorOpsSuite.scala
index d264514..fe272df 100644
--- a/math-scala/src/test/scala/org/apache/mahout/math/scalabindings/VectorOpsSuite.scala
+++ b/math-scala/src/test/scala/org/apache/mahout/math/scalabindings/VectorOpsSuite.scala
@@ -32,12 +32,23 @@ class VectorOpsSuite extends FunSuite with MahoutSuite {
val sparseVec = svec((5 -> 1) :: (10 -> 2.0) :: Nil)
println(sparseVec)
+ assert(sparseVec.size() == 11)
+
val sparseVec2: Vector = (5 -> 1.0) :: (10 -> 2.0) :: Nil
println(sparseVec2)
val sparseVec3: Vector = new RandomAccessSparseVector(100) := (5 -> 1.0) :: Nil
println(sparseVec3)
+ val sparseVec4 = svec((5 -> 1) :: (10 -> 2.0) :: Nil, 100)
+ println(sparseVec4)
+
+ assert(sparseVec4.size() == 100)
+
+ intercept[IllegalArgumentException] {
+ val sparseVec5 = svec((5 -> 1) :: (10 -> 2.0) :: Nil, 10)
+ }
+
val denseVec1: Vector = (1.0, 1.1, 1.2)
println(denseVec1)