[
https://issues.apache.org/jira/browse/MAHOUT-1227?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13666951#comment-13666951
]
Hudson commented on MAHOUT-1227:
--------------------------------
Integrated in Mahout-Quality #2014 (See
[https://builds.apache.org/job/Mahout-Quality/2014/])
Removes Iterable and iterateNonZero() from Vector interface, replaces with
two Iterable-returning methods fixes MAHOUT-1227 (Revision 1486122)
Result = SUCCESS
jmannix :
http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1486122
Files :
*
/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/als/ALS.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/als/ParallelALSFactorizationJob.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/als/PredictionMapper.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/AggregateAndRecommendReducer.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/UserVectorSplitterMapper.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/preparation/ToItemVectorsMapper.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/similarity/item/ItemSimilarityJob.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/classifier/discriminative/WinnowTrainer.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/classifier/naivebayes/AbstractNaiveBayesClassifier.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/classifier/naivebayes/test/TestNaiveBayesDriver.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/classifier/naivebayes/training/ComplementaryThetaTrainer.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/classifier/naivebayes/training/StandardThetaTrainer.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/classifier/sgd/AbstractOnlineLogisticRegression.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/classifier/sgd/ModelDissector.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/AbstractCluster.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/classify/ClusterClassificationDriver.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/classify/ClusterClassificationMapper.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/GaussianCluster.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/iterator/CIMapper.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/iterator/ClusterIterator.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/lda/cvb/TopicModel.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/minhash/MinHashMapper.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/spectral/common/UnitVectorizerJob.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/spectral/common/VectorMatrixMultiplicationJob.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/spectral/eigencuts/EigencutsAffinityCutsJob.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/spectral/eigencuts/EigencutsDriver.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/common/distance/WeightedEuclideanDistanceMeasure.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/common/distance/WeightedManhattanDistanceMeasure.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/common/mapreduce/TransposeMapper.java
* /mahout/trunk/core/src/main/java/org/apache/mahout/math/VectorWritable.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/MatrixMultiplicationJob.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/TransposeJob.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/cooccurrence/RowSimilarityJob.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/cooccurrence/Vectors.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/cooccurrence/measures/EuclideanDistanceSimilarity.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/cooccurrence/measures/PearsonCorrelationSimilarity.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/stochasticsvd/ABtDenseOutJob.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/stochasticsvd/ABtJob.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/stochasticsvd/BtJob.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/stochasticsvd/Omega.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/stochasticsvd/UpperTriangular.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/stochasticsvd/YtYJob.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/stochasticsvd/qr/QRFirstStep.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/math/neighborhood/HashedVector.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/math/stats/GlobalOnlineAuc.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/vectorizer/pruner/WordsPrunerReducer.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/vectorizer/term/TermDocumentCountMapper.java
*
/mahout/trunk/core/src/main/java/org/apache/mahout/vectorizer/tfidf/TFIDFPartialVectorReducer.java
*
/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/hadoop/als/ParallelALSFactorizationJobTest.java
*
/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/recommender/svd/ALSWRFactorizerTest.java
*
/mahout/trunk/core/src/test/java/org/apache/mahout/classifier/naivebayes/NaiveBayesTestBase.java
*
/mahout/trunk/core/src/test/java/org/apache/mahout/classifier/sgd/AdaptiveLogisticRegressionTest.java
*
/mahout/trunk/core/src/test/java/org/apache/mahout/clustering/minhash/TestMinHashClustering.java
*
/mahout/trunk/core/src/test/java/org/apache/mahout/clustering/spectral/common/TestAffinityMatrixInputJob.java
*
/mahout/trunk/core/src/test/java/org/apache/mahout/clustering/spectral/eigencuts/TestEigencutsAffinityCutsJob.java
* /mahout/trunk/core/src/test/java/org/apache/mahout/math/hadoop/MathHelper.java
*
/mahout/trunk/core/src/test/java/org/apache/mahout/math/hadoop/stochasticsvd/LocalSSVDSolverDenseTest.java
*
/mahout/trunk/core/src/test/java/org/apache/mahout/math/hadoop/stochasticsvd/LocalSSVDSolverSparseSequentialTest.java
*
/mahout/trunk/core/src/test/java/org/apache/mahout/vectorizer/encoders/WordLikeValueEncoderTest.java
*
/mahout/trunk/examples/src/main/java/org/apache/mahout/clustering/minhash/LastfmClusterEvaluator.java
*
/mahout/trunk/integration/src/main/java/org/apache/mahout/clustering/cdbw/CDbwEvaluator.java
*
/mahout/trunk/integration/src/main/java/org/apache/mahout/clustering/evaluation/ClusterEvaluator.java
*
/mahout/trunk/integration/src/main/java/org/apache/mahout/utils/clustering/AbstractClusterWriter.java
*
/mahout/trunk/integration/src/main/java/org/apache/mahout/utils/vectors/VectorHelper.java
*
/mahout/trunk/integration/src/test/java/org/apache/mahout/clustering/dirichlet/TestL1ModelClustering.java
* /mahout/trunk/math/src/main/java/org/apache/mahout/math/AbstractVector.java
* /mahout/trunk/math/src/main/java/org/apache/mahout/math/DelegatingVector.java
* /mahout/trunk/math/src/main/java/org/apache/mahout/math/DenseVector.java
* /mahout/trunk/math/src/main/java/org/apache/mahout/math/FileBasedMatrix.java
*
/mahout/trunk/math/src/main/java/org/apache/mahout/math/FileBasedSparseBinaryMatrix.java
* /mahout/trunk/math/src/main/java/org/apache/mahout/math/NamedVector.java
*
/mahout/trunk/math/src/main/java/org/apache/mahout/math/PermutedVectorView.java
*
/mahout/trunk/math/src/main/java/org/apache/mahout/math/RandomAccessSparseVector.java
*
/mahout/trunk/math/src/main/java/org/apache/mahout/math/SequentialAccessSparseVector.java
* /mahout/trunk/math/src/main/java/org/apache/mahout/math/Vector.java
*
/mahout/trunk/math/src/main/java/org/apache/mahout/math/VectorBinaryAggregate.java
*
/mahout/trunk/math/src/main/java/org/apache/mahout/math/VectorBinaryAssign.java
* /mahout/trunk/math/src/main/java/org/apache/mahout/math/VectorView.java
*
/mahout/trunk/math/src/main/java/org/apache/mahout/math/WeightedVectorComparator.java
*
/mahout/trunk/math/src/main/java/org/apache/mahout/math/als/AlternatingLeastSquaresSolver.java
*
/mahout/trunk/math/src/main/java/org/apache/mahout/math/als/ImplicitFeedbackAlternatingLeastSquaresSolver.java
*
/mahout/trunk/math/src/test/java/org/apache/mahout/math/AbstractVectorTest.java
* /mahout/trunk/math/src/test/java/org/apache/mahout/math/VectorTest.java
*
/mahout/trunk/math/src/test/java/org/apache/mahout/math/solver/EigenDecompositionTest.java
> Vector.iterateNonZero() is super-clumsy to use: add Iterable<Element>
> allNonZero()
> ----------------------------------------------------------------------------------
>
> Key: MAHOUT-1227
> URL: https://issues.apache.org/jira/browse/MAHOUT-1227
> Project: Mahout
> Issue Type: Improvement
> Environment: all
> Reporter: Andy Schlaikjer
> Assignee: Jake Mannix
> Fix For: 0.8
>
> Attachments: MAHOUT-1227-big.diff, MAHOUT-1227.diff
>
>
> Currently, our codebase is littered with the following:
> {code}
> Iterator<Element> it = vector.iterateNonZero();
> while (it.hasNext()) {
> Element e = it.next();
> ...
> {code}
> wouldn't it be nice to be able to do:
> {code}
> for (Element e : vector.allNonZero()) {
> ...
> {code}
> instead?
> I propose adding an Iterable<Element> allNonZero() which allow this syntactic
> sugar. To make it symmetric with iterateAll, let's also add
> Iterable<Element> all(), and implement the simply in AbstractVector.
> The first diff adding this is very non-invasive - new methods added to
> interface, implemented in the three classes from which all Vector
> implementations derive (AbstractVector, NamedVector, and DelegatingVector).
> User code should just work, unless they've implemented their own vector
> without subclassing one of these three (yikes).
> Next diff, which is more invasive, would remove "extends Iterable<Element>"
> from Vector, because using the foreach of a Vector itself is very rarely what
> the caller really means to do (it's the all-iterator, very bad for the more
> common sparse use case). To achieve the same effect, the caller chooses
> between vector.all() and vector.allNonZero(), and then they're being crystal
> clear what they mean.
> Lastly, I'd propose we make iterateAll() and iterateAllNonZero() protected
> methods on AbstractVector, so that we are forced to remove all the clumsy
> places where we do Iterator<Element> it = ... all throughout the codebase. I
> suspect there will be very few places left that really want the raw iterator,
> but if there are any, it can be gotten by calling
> vector.(all/allNonZero).iterator()
> (feature-request/api fix suggestion idea courtesy of Andy Schlaikjer,
> formalized as a proposal and posted up here by me, Jake Mannix)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira