You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mahout.apache.org by "Alexey Grigorev (JIRA)" <ji...@apache.org> on 2015/04/15 18:01:00 UTC

[jira] [Created] (MAHOUT-1691) iterable of vectors to matrix

Alexey Grigorev created MAHOUT-1691:
---------------------------------------

             Summary: iterable of vectors to matrix 
                 Key: MAHOUT-1691
                 URL: https://issues.apache.org/jira/browse/MAHOUT-1691
             Project: Mahout
          Issue Type: Improvement
          Components: Math
    Affects Versions: 0.10.1
            Reporter: Alexey Grigorev
            Priority: Minor


In Mahout scala bindings, instead of writing  

{code}
val res = drmX.mapBlock(drmX.ncol) {
  case (keys, block) => {
    val copy = block.like
    copy := block.map(row => (row - mean) / std)
    (keys, copy)
  }
}
{code}

I would like to be able to write 

{code}
val res = drmX.mapBlock(drmX.ncol) {
  case (keys, block) => {
    keys -> block.map(row => (row - mean) / std)
  }
}
{code}

Solution: add a method for implicit conversion from iterable to Matrix:

{code}
  implicit def iterable2Matrix(that: Iterable[Vector]): Matrix = {
    val first = that.head
    val nrow = that.size
    val ncol = first.size

    val m = if (first.isDense) {
      new DenseMatrix(nrow, ncol)
    } else {
      new SparseRowMatrix(nrow, ncol)
    }

    that.zipWithIndex.foreach { case (row, idx) => 
      m.assignRow(idx.toInt, row)
    }

    m
  }
{code}

If it sounds nice, I can send a pull request with this implemented



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)