List of usage examples for org.apache.mahout.math VarLongWritable get
public long get()
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); }