Example usage for org.apache.mahout.math VarLongWritable get

List of usage examples for org.apache.mahout.math VarLongWritable get

Introduction

In this page you can find the example usage for org.apache.mahout.math VarLongWritable get.

Prototype

public long get() 

Source Link

Usage

From source file:com.pocketx.gravity.recommender.cf.similarity.mapreduce.ToItemVectorsMapper.java

License:Apache License

@Override
protected void map(VarLongWritable rowIndex, VectorWritable vectorWritable, Context ctx)
        throws IOException, InterruptedException {
    Vector userRatings = vectorWritable.get();

    int numElementsBeforeSampling = userRatings.getNumNondefaultElements();
    userRatings = Vectors.maybeSample(userRatings, sampleSize);
    int numElementsAfterSampling = userRatings.getNumNondefaultElements();

    int column = TasteHadoopUtils.idToIndex(rowIndex.get());
    VectorWritable itemVector = new VectorWritable(new RandomAccessSparseVector(Integer.MAX_VALUE, 1));
    itemVector.setWritesLaxPrecision(true);
    ///*from   w w w . java2s  .  c  om*/
    Iterator<Vector.Element> iterator = userRatings.nonZeroes().iterator();
    //
    while (iterator.hasNext()) {
        Vector.Element elem = iterator.next();
        itemVector.get().setQuick(column, elem.get());
        ctx.write(new IntWritable(elem.index()), itemVector);
    }

    ctx.getCounter(Elements.USER_RATINGS_USED).increment(numElementsAfterSampling);
    ctx.getCounter(Elements.USER_RATINGS_NEGLECTED)
            .increment(numElementsBeforeSampling - numElementsAfterSampling);
}

From source file:nl.gridline.zieook.inx.movielens.hbase.UserRecommendationsStoreMap.java

License:Apache License

protected void map(VarLongWritable key, RecommendedItemsWritable value, Context context)
        throws IOException, InterruptedException {
    // <UserId, [item,value]>
    // the in the recommendations are already sorted! - this makes writing them easy

    List<RecommendedItem> recommendations = value.getRecommendedItems();
    int rank = 1;
    Put put = new Put(RowKeys.getRecommendationKey(collection, recommender, key.get()));
    for (RecommendedItem el : recommendations) {
        byte[] data = nl.gridline.zieook.model.Recommend.getRecommendation(el.getItemID(), rank, el.getValue());
        put.add(RECOMMENDATION_COLUMN, Bytes.toBytes(rank), data);
        rank++;/*from   www. j a v  a2  s .c  o m*/
    }
    context.write(new LongWritable(key.get()), put);

}

From source file:nl.gridline.zieook.inx.movielens.UserVectorSplitterMapper.java

License:Apache License

@Override
protected void map(VarLongWritable key, VectorWritable value, Context context)
        throws IOException, InterruptedException {
    long userID = key.get();
    if (usersToRecommendFor != null && !usersToRecommendFor.contains(userID)) {
        return;/*from  ww w.j ava 2 s  .c o  m*/
    }
    Vector userVector = maybePruneUserVector(value.get());
    Iterator<Vector.Element> it = userVector.iterateNonZero();
    VarIntWritable itemIndexWritable = new VarIntWritable();
    VectorOrPrefWritable vectorOrPref = new VectorOrPrefWritable();
    while (it.hasNext()) {
        Vector.Element e = it.next();
        itemIndexWritable.set(e.index());
        vectorOrPref.set(userID, (float) e.get());
        context.write(itemIndexWritable, vectorOrPref);
    }
}

From source file:org.gpfvic.mahout.cf.taste.hadoop.item.AggregateAndRecommendReducer.java

License:Apache License

/**
 * find the top entries in recommendationVector, map them to the real itemIDs and write back the result
 *//*from  w  w  w. j  a va 2  s  .c o  m*/
private void writeRecommendedItems(VarLongWritable userID, Vector recommendationVector, Context context)
        throws IOException, InterruptedException {
    TopItemsQueue topKItems = new TopItemsQueue(recommendationsPerUser);
    FastIDSet itemsForUser = null;

    if (idReader != null && idReader.isUserItemFilterSpecified()) {
        itemsForUser = idReader.getItemsToRecommendForUser(userID.get());
    }

    for (Element element : recommendationVector.nonZeroes()) {
        int index = element.index();
        long itemID;
        if (indexItemIDMap != null && !indexItemIDMap.isEmpty()) {
            itemID = indexItemIDMap.get(index);
        } else { // we don't have any mappings, so just use the original
            itemID = index;
        }

        if (shouldIncludeItemIntoRecommendations(itemID, itemsToRecommendFor, itemsForUser)) {

            float value = (float) element.get();
            if (!Float.isNaN(value)) {

                MutableRecommendedItem topItem = topKItems.top();
                if (value > topItem.getValue()) {
                    topItem.set(itemID, value);
                    topKItems.updateTop();
                }
            }
        }
    }

    List<RecommendedItem> topItems = topKItems.getTopItems();
    if (!topItems.isEmpty()) {
        recommendedItems.set(topItems);
        context.write(userID, recommendedItems);
    }
}

From source file:org.gpfvic.mahout.cf.taste.hadoop.item.ItemFilterAsVectorAndPrefsReducer.java

License:Apache License

@Override
protected void reduce(VarLongWritable itemID, Iterable<VarLongWritable> values, Context ctx)
        throws IOException, InterruptedException {

    int itemIDIndex = TasteHadoopUtils.idToIndex(itemID.get());
    Vector vector = new RandomAccessSparseVector(Integer.MAX_VALUE, 1);
    /* artificial NaN summand to exclude this item from the recommendations for all users specified in userIDs */
    vector.set(itemIDIndex, Double.NaN);

    List<Long> userIDs = new ArrayList<>();
    List<Float> prefValues = new ArrayList<>();
    for (VarLongWritable userID : values) {
        userIDs.add(userID.get());//  ww  w . java2s . c o  m
        prefValues.add(1.0f);
    }

    itemIDIndexWritable.set(itemIDIndex);
    vectorAndPrefs.set(vector, userIDs, prefValues);
    ctx.write(itemIDIndexWritable, vectorAndPrefs);
}

From source file:org.gpfvic.mahout.cf.taste.hadoop.item.ItemIDIndexReducer.java

License:Apache License

@Override
protected void reduce(VarIntWritable index, Iterable<VarLongWritable> possibleItemIDs, Context context)
        throws IOException, InterruptedException {
    long minimumItemID = Long.MAX_VALUE;
    for (VarLongWritable varLongWritable : possibleItemIDs) {
        long itemID = varLongWritable.get();
        if (itemID < minimumItemID) {
            minimumItemID = itemID;//from  w w w .j  a  va  2s . c o m
        }
    }
    if (minimumItemID != Long.MAX_VALUE) {
        minimumItemIDWritable.set(minimumItemID);
        context.write(index, minimumItemIDWritable);
    }
}

From source file:org.gpfvic.mahout.cf.taste.hadoop.item.ToUserVectorsReducer.java

License:Apache License

@Override
protected void reduce(VarLongWritable userID, Iterable<VarLongWritable> itemPrefs, Context context)
        throws IOException, InterruptedException {
    Vector userVector = new RandomAccessSparseVector(Integer.MAX_VALUE, 100);
    for (VarLongWritable itemPref : itemPrefs) {
        int index = TasteHadoopUtils.idToIndex(itemPref.get());
        float value = itemPref instanceof EntityPrefWritable ? ((EntityPrefWritable) itemPref).getPrefValue()
                : 1.0f;/*w  w w  .  j  a  v a  2  s  .c  o m*/
        userVector.set(index, value);
    }

    if (userVector.getNumNondefaultElements() >= minPreferences) {
        userVectorWritable.set(userVector);
        userVectorWritable.setWritesLaxPrecision(true);
        context.getCounter(Counters.USERS).increment(1);
        context.write(userID, userVectorWritable);
    }
}

From source file:org.gpfvic.mahout.cf.taste.hadoop.item.UserVectorSplitterMapper.java

License:Apache License

@Override
protected void map(VarLongWritable key, VectorWritable value, Context context)
        throws IOException, InterruptedException {
    long userID = key.get();

    log.info("UserID = {}", userID);

    if (usersToRecommendFor != null && !usersToRecommendFor.contains(userID)) {
        return;/*from   w  ww .  j a va 2s  .c  o m*/
    }
    Vector userVector = maybePruneUserVector(value.get());

    for (Element e : userVector.nonZeroes()) {
        itemIndexWritable.set(e.index());
        vectorOrPref.set(userID, (float) e.get());
        context.write(itemIndexWritable, vectorOrPref);
    }
}

From source file:org.gpfvic.mahout.cf.taste.hadoop.preparation.ToItemVectorsMapper.java

License:Apache License

@Override
protected void map(VarLongWritable rowIndex, VectorWritable vectorWritable, Context ctx)
        throws IOException, InterruptedException {
    Vector userRatings = vectorWritable.get();

    int column = TasteHadoopUtils.idToIndex(rowIndex.get());

    itemVectorWritable.setWritesLaxPrecision(true);

    Vector itemVector = new RandomAccessSparseVector(Integer.MAX_VALUE, 1);
    for (Vector.Element elem : userRatings.nonZeroes()) {
        itemID.set(elem.index());//w  ww .  j  ava  2  s  .co m
        itemVector.setQuick(column, elem.get());
        itemVectorWritable.set(itemVector);
        ctx.write(itemID, itemVectorWritable);
        // reset vector for reuse
        itemVector.setQuick(elem.index(), 0.0);
    }
}

From source file:org.hf.mls.mahout.cf.taste.hadoop.preparation.ToItemVectorsMapper.java

License:Apache License

@Override
protected void map(VarLongWritable rowIndex, VectorWritable vectorWritable, Context ctx)
        throws IOException, InterruptedException {
    Vector userRatings = vectorWritable.get();

    int numElementsBeforeSampling = userRatings.getNumNondefaultElements();
    userRatings = Vectors.maybeSample(userRatings, sampleSize);
    int numElementsAfterSampling = userRatings.getNumNondefaultElements();

    int column = TasteHadoopUtils.idToIndex(rowIndex.get());

    itemVectorWritable.setWritesLaxPrecision(true);

    Vector itemVector = new RandomAccessSparseVector(Integer.MAX_VALUE, 1);
    for (Vector.Element elem : userRatings.nonZeroes()) {
        itemID.set(elem.index());//w w w  .ja v  a 2  s .com
        itemVector.setQuick(column, elem.get());
        itemVectorWritable.set(itemVector);
        ctx.write(itemID, itemVectorWritable);
        // reset vector for reuse
        itemVector.setQuick(elem.index(), 0.0);
    }

    ctx.getCounter(Elements.USER_RATINGS_USED).increment(numElementsAfterSampling);
    ctx.getCounter(Elements.USER_RATINGS_NEGLECTED)
            .increment(numElementsBeforeSampling - numElementsAfterSampling);
}