Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * KNNFastPredictor.java
   * 
   * Copyright (C) 2013 Alessandro Negro <alessandro.negro at reco4j.org>
   *
   * This program is free software: you can redistribute it and/or modify
   * it under the terms of the GNU General Public License as published by
   * the Free Software Foundation, either version 3 of the License, or
   * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 package org.reco4j.recommender.knn;
 

Author(s):
Luigi Giuri < luigi.giuri at reco4j.org >
 
 public class KNNFastPredictor
   implements IPredictor
 {
   private KNNFastModel model;
   private boolean isBinary = false;
   
   public KNNFastPredictor(UserItemDataset userItemDatasetKNNFastModel model)
   {
     this. = userItemDataset;
     this. = model;
   }
   public KNNFastPredictor(UserItemDataset userItemDatasetKNNFastModel modelboolean isBinary)
   {
     this. = userItemDataset;
     this. = model;
     this. = isBinary;
   }
 
   @Override
   public double predictRating(INode userINode item)
   {
     if (!)
       return predictRatingAux(useritem);
     else
       return predictBinaryRating(useritem);
   }
   
   public double predictRatingAux(INode userINode item)
   {
     double estimatedRating = 0.0;
     double similaritySum = 0.0;
     double weightedRatingSum = 0.0;
 
     if (!.containsItem(item.getId()))
       return 0.0;
     FastByIDMap<RatingrowItem = .getItemRatings(item.getId());
     final LongPrimitiveIterator rowKeySetIterator = rowItem.keySetIterator();
     while (rowKeySetIterator.hasNext())
     {
       Rating rate = rowItem.get(rowKeySetIterator.next());
       IEdge edge = .getRatingEdge(userrate.getItem());
       if (edge == null)
         continue;
       double uRate = .getRating(edge);
       double similarityBetweenItem = rate.getRate();
       weightedRatingSum += uRate * similarityBetweenItem;
       similaritySum += similarityBetweenItem;
     }
     if (similaritySum > 0)
       estimatedRating = weightedRatingSum / similaritySum;
     return estimatedRating;
   }
   
   public double predictBinaryRating(INode userINode item)
   {
     double similaritySum = 0.0;
     if (!.containsItem(item.getId()))
       return 0.0;
     FastByIDMap<RatingrowItem = .getItemRatings(item.getId());
     final LongPrimitiveIterator rowKeySetIterator = rowItem.keySetIterator();
     while (rowKeySetIterator.hasNext())
     {
       Rating rate = rowItem.get(rowKeySetIterator.next());
       IEdge edge = .getRatingEdge(userrate.getItem());
       if (edge == null)
         continue;
      double similarityBetweenItem = rate.getRate();
      similaritySum += similarityBetweenItem;
    }
    return similaritySum;
  }
New to GrepCode? Check out our FAQ X