Package org.grouplens.lenskit.vectors

Examples of org.grouplens.lenskit.vectors.MutableSparseVector


            }
        });

        final int n = ids.length;
        final double[] values = new double[n];
        MutableSparseVector rank = vec.mutableCopy();
        // assign ranks to each item
        for (int i = 0; i < n; i++) {
            rank.set(ids[i], i + 1);
            values[i] = vec.get(ids[i]);
        }

        // average ranks for items with same values
        int i = 0;
        while (i < n) {
            int j;
            for (j = i + 1; j < n; j++) {
                if (values[j] != values[i]) {
                    break;
                }
            }
            if (j - i > 1) {
                double r2 = (rank.get(ids[i]) + rank.get(ids[j - 1])) / (j - i);
                for (int k = i; k < j; k++) {
                    rank.set(ids[k], r2);
                }
            }
            i = j;
        }
View Full Code Here


    public MutableSparseVector finishVector() {
        if (scores == null) {
            return MutableSparseVector.create();
        }

        MutableSparseVector vec = scores.buildVector().mutableCopy();
        scores.clear();
        scores = null;
        return vec;
    }
View Full Code Here

        for (Rating r: ratings) {
            ids.add(dimension.getId(r));
        }

        LongKeyDomain keys = LongKeyDomain.fromCollection(ids, false);
        MutableSparseVector msv = MutableSparseVector.create(keys.domain());
        long[] timestamps = null;
        // check for fast-path, where each item has one rating
        if (keys.domainSize() < ratings.size()) {
            timestamps = new long[keys.domainSize()];
        }

        for (Rating r: ratings) {
            long id = dimension.getId(r);
            if (timestamps != null) {
                int idx = keys.getIndex(id);
                if (keys.indexIsActive(idx) && timestamps[idx] >= r.getTimestamp()) {
                    continue// we have seen a newer event - skip this.
                } else {
                    timestamps[idx] = r.getTimestamp();
                    keys.setActive(idx, true);
                }
            }

            Preference p = r.getPreference();
            if (p != null) {
                // save the preference
                msv.set(id, p.getValue());
            } else {
                msv.unset(id);
            }
        }

        return msv;
    }
View Full Code Here

            user = u;
        }

        @Override
        public MutableSparseVector apply(MutableSparseVector vector) {
            MutableSparseVector base = MutableSparseVector.create(vector.keySet());
            baselineScorer.score(user, base);
            vector.subtract(base);
            return vector;
        }
View Full Code Here

            return vector;
        }

        @Override
        public MutableSparseVector unapply(MutableSparseVector vector) {
            MutableSparseVector base = MutableSparseVector.create(vector.keySet());
            baselineScorer.score(user, base);
            vector.add(base);
            return vector;
        }
View Full Code Here

     * and the resulting {@link VectorTransformation}.
     */
    @Override
    public MutableSparseVector normalize(long user, @Nonnull SparseVector vector,
                                         @Nullable MutableSparseVector target) {
        MutableSparseVector v = target;
        if (v == null) {
            v = vector.mutableCopy();
        }

        VectorTransformation tform = makeTransformation(user, vector);
View Full Code Here

     * <p>Delegates to {@link #score(long, MutableSparseVector)}.
     */
    @Nonnull
    @Override
    public SparseVector score(long user, @Nonnull Collection<Long> items) {
        MutableSparseVector scores = MutableSparseVector.create(items);
        score(user, scores);
        // FIXME Create a more efficient way of "releasing" mutable sparse vectors
        return scores.freeze();
    }
View Full Code Here

     * resulting {@link VectorTransformation}.
     */
    @Override
    public MutableSparseVector normalize(@Nonnull SparseVector reference,
                                         @Nullable MutableSparseVector target) {
        MutableSparseVector v = target;
        if (v == null) {
            v = reference.mutableCopy();
        }

        VectorTransformation tform = makeTransformation(reference);
View Full Code Here

     * <p>Delegates to {@link #predict(long, MutableSparseVector)}.
     */
    @Nonnull
    @Override
    public SparseVector predict(long user, @Nonnull Collection<Long> items) {
        MutableSparseVector scores = MutableSparseVector.create(items);
        predict(user, scores);
        // FIXME Create a more efficient way of "releasing" mutable sparse vectors
        return scores.freeze();
    }
View Full Code Here

    public MutableSparseVector convertArrayToVector(double[] values) {
        if(values.length != getObjectCount()){
            throw new IllegalArgumentException("Value array has incorrect length");
        }

        MutableSparseVector newSparseVector = MutableSparseVector.create(ids);
        for(VectorEntry e : newSparseVector.view(State.EITHER)){
            final int iid = getIndex(e.getKey());
            newSparseVector.set(e, values[iid]);
        }
        return newSparseVector;
    }
View Full Code Here

TOP

Related Classes of org.grouplens.lenskit.vectors.MutableSparseVector

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.