Repository: mahout Updated Branches: refs/heads/master d9940489d -> 727e5be85
MAHOUT-1837: fix incorrect <= threshold to > threshold to indicate a dense matrix. Refactored name to densityAnalysis(...). closes apache/mahout#244 Project: http://git-wip-us.apache.org/repos/asf/mahout/repo Commit: http://git-wip-us.apache.org/repos/asf/mahout/commit/727e5be8 Tree: http://git-wip-us.apache.org/repos/asf/mahout/tree/727e5be8 Diff: http://git-wip-us.apache.org/repos/asf/mahout/diff/727e5be8 Branch: refs/heads/master Commit: 727e5be85c0326d9c009d9cdc361fe47ffa201ad Parents: d994048 Author: Andrew Palumbo <[email protected]> Authored: Fri Jun 24 16:56:28 2016 -0400 Committer: Andrew Palumbo <[email protected]> Committed: Fri Jun 24 17:25:23 2016 -0400 ---------------------------------------------------------------------- .../org/apache/mahout/math/scalabindings/MMul.scala | 8 ++++---- .../apache/mahout/math/scalabindings/package.scala | 4 ++-- .../mahout/math/scalabindings/MathSuite.scala | 16 ++++++++-------- .../apache/mahout/sparkbindings/drm/package.scala | 2 +- 4 files changed, 15 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mahout/blob/727e5be8/math-scala/src/main/scala/org/apache/mahout/math/scalabindings/MMul.scala ---------------------------------------------------------------------- diff --git a/math-scala/src/main/scala/org/apache/mahout/math/scalabindings/MMul.scala b/math-scala/src/main/scala/org/apache/mahout/math/scalabindings/MMul.scala index 6389806..2938e5d 100644 --- a/math-scala/src/main/scala/org/apache/mahout/math/scalabindings/MMul.scala +++ b/math-scala/src/main/scala/org/apache/mahout/math/scalabindings/MMul.scala @@ -35,7 +35,7 @@ object MMul extends MMBinaryFunc { val (af, bf) = (a.getFlavor, b.getFlavor) val backs = (af.getBacking, bf.getBacking) - val sd = (af.getStructure, sparsityAnalysis(a), bf.getStructure, sparsityAnalysis(b)) + val sd = (af.getStructure, densityAnalysis(a), bf.getStructure, densityAnalysis(b)) val alg: MMulAlg = backs match { @@ -124,7 +124,7 @@ object MMul extends MMBinaryFunc { require(r.forall(mxR â mxR.nrow == a.nrow && mxR.ncol == b.ncol)) val (m, n) = (a.nrow, b.ncol) - val mxR = r.getOrElse(if (sparsityAnalysis(a)) a.like(m, n) else b.like(m, n)) + val mxR = r.getOrElse(if (densityAnalysis(a)) a.like(m, n) else b.like(m, n)) for (row â 0 until mxR.nrow; col â 0 until mxR.ncol) { // this vector-vector should be sort of optimized, right? @@ -269,10 +269,10 @@ object MMul extends MMBinaryFunc { val (m, n) = (a.nrow, b.ncol) // Prefer col-wise result iff a is dense and b is sparse. In all other cases default to row-wise. - val preferColWiseR = sparsityAnalysis(a) && !sparsityAnalysis(b) + val preferColWiseR = densityAnalysis(a) && !densityAnalysis(b) val mxR = r.getOrElse { - (sparsityAnalysis(a), preferColWiseR) match { + (densityAnalysis(a), preferColWiseR) match { case (false, false) â b.like(m, n) case (false, true) â b.like(n, m).t case (true, false) â a.like(m, n) http://git-wip-us.apache.org/repos/asf/mahout/blob/727e5be8/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 71a2c11..167e192 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 @@ -425,7 +425,7 @@ package object scalabindings { * @param mx The matrix to check density of. * @param threshold the threshold of non-zero elements above which we consider a Matrix Dense */ - def sparsityAnalysis(mx: Matrix, threshold: Double = 0.25): Boolean = { + def densityAnalysis(mx: Matrix, threshold: Double = 0.25): Boolean = { require(threshold >= 0.0 && threshold <= 1.0) var n = minSamples @@ -465,7 +465,7 @@ package object scalabindings { else if (mean > threshold + iv) return true // dense } - return mean <= threshold + return mean > threshold // if (mean > threshold) dense } http://git-wip-us.apache.org/repos/asf/mahout/blob/727e5be8/math-scala/src/test/scala/org/apache/mahout/math/scalabindings/MathSuite.scala ---------------------------------------------------------------------- diff --git a/math-scala/src/test/scala/org/apache/mahout/math/scalabindings/MathSuite.scala b/math-scala/src/test/scala/org/apache/mahout/math/scalabindings/MathSuite.scala index 264e375..ee80841 100644 --- a/math-scala/src/test/scala/org/apache/mahout/math/scalabindings/MathSuite.scala +++ b/math-scala/src/test/scala/org/apache/mahout/math/scalabindings/MathSuite.scala @@ -243,24 +243,24 @@ class MathSuite extends FunSuite with MahoutSuite { val n = 800 val mxA = new DenseMatrix(m, n) - sparsityAnalysis(mxA) shouldBe false - sparsityAnalysis(mxA, .5) shouldBe false - sparsityAnalysis(mxA + 1) shouldBe true - sparsityAnalysis(mxA + 1, .95) shouldBe true + densityAnalysis(mxA) shouldBe false + densityAnalysis(mxA, .5) shouldBe false + densityAnalysis(mxA + 1) shouldBe true + densityAnalysis(mxA + 1, .95) shouldBe true for (i â 0 until m by 5) mxA(i, ::) := 1 - info(s"20% detected as dense?:${sparsityAnalysis(mxA)}") + info(s"20% detected as dense?:${densityAnalysis(mxA)}") mxA := 0 for (i â 0 until m by 3) mxA(i, ::) := 1 - info(s"33% detected as dense?:${sparsityAnalysis(mxA)}") + info(s"33% detected as dense?:${densityAnalysis(mxA)}") mxA := 0 for (i â 0 until m by 4) mxA(i, ::) := 1 - info(s"25% detected as dense?:${sparsityAnalysis(mxA)}") + info(s"25% detected as dense?:${densityAnalysis(mxA)}") for (i â 0 until m by 2) mxA(i, ::) := 1 - info(s"50% detected as dense?:${sparsityAnalysis(mxA)}") + info(s"50% detected as dense?:${densityAnalysis(mxA)}") } http://git-wip-us.apache.org/repos/asf/mahout/blob/727e5be8/spark/src/main/scala/org/apache/mahout/sparkbindings/drm/package.scala ---------------------------------------------------------------------- diff --git a/spark/src/main/scala/org/apache/mahout/sparkbindings/drm/package.scala b/spark/src/main/scala/org/apache/mahout/sparkbindings/drm/package.scala index aca7c3c..f739a43 100644 --- a/spark/src/main/scala/org/apache/mahout/sparkbindings/drm/package.scala +++ b/spark/src/main/scala/org/apache/mahout/sparkbindings/drm/package.scala @@ -74,7 +74,7 @@ package object drm { // Test the density of the data. If the matrix does not meet the // requirements for density, convert the Vectors to a sparse Matrix. - val resBlock = if (sparsityAnalysis(block)) { + val resBlock = if (densityAnalysis(block)) { block } else { new SparseRowMatrix(vectors.length, blockncol, vectors, true, false)
