[ 
https://issues.apache.org/jira/browse/MAHOUT-1691?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14496770#comment-14496770
 ] 

Anand Avati commented on MAHOUT-1691:
-------------------------------------

[~dlyubimov], what do you think about having a copy-on-write wrapper around 
Matrix when passed to the block-map-function? This way the user is given the 
freedom to modify the Matrix without side-effect worries, whether checkpointed 
or not, and a Matrix clone is made automatically only if necessary. H2O backend 
does this in H2OBlockMatrix (though it just does not use clone(), as the 
backend is h2o native Chunk, and not BlockifiedDrmTuple)

> 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
>              Labels: math, scala
>
> 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)

Reply via email to