package com.packpub.mahout.recommendationengines;

import java.io.File;
import java.io.IOException;
import java.util.List;

import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.impl.recommender.svd.ParallelSGDFactorizer;
import org.apache.mahout.cf.taste.impl.recommender.svd.SVDRecommender;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;


public class UserBasedSVDRecommender {

	public static void main(String[] args) throws TasteException, IOException {
		//MF recommender model
    	DataModel model = new FileDataModel(new File("data/recodataset.csv"));   
    	//ALSWRFactorizer factorizer = new ALSWRFactorizer(model, 50, 0.065, 15);
    	ParallelSGDFactorizer factorizer = new ParallelSGDFactorizer(model,10,0.1,1);
    	SVDRecommender recommender = new SVDRecommender(model, factorizer);    	
    	
    	List<RecommendedItem> recommendations = recommender.recommend(2, 3);
    	for (RecommendedItem recommendation : recommendations) {
    	  System.out.println(recommendation);
    	}

	}

}