package com.test;
import java.io.File;
import java.io.IOException;
import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.eval.RecommenderBuilder;
import org.apache.mahout.cf.taste.eval.RecommenderEvaluator;
import org.apache.mahout.cf.taste.impl.eval.AverageAbsoluteDifferenceRecommenderEvaluator;
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood;
import org.apache.mahout.cf.taste.impl.neighborhood.ThresholdUserNeighborhood;
import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.recommender.Recommender;
import org.apache.mahout.cf.taste.recommender.UserBasedRecommender;
import org.apache.mahout.cf.taste.similarity.UserSimilarity;
public class M {
public static void main(String[] args) throws IOException, TasteException {
// DataModel dataModel = new FileDataModel(new File("/home/xxx/work/mashout/data.csv"));
// UserSimilarity similarity = new PearsonCorrelationSimilarity(dataModel);
// UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, dataModel);
// Recommender recommender = new GenericUserBasedRecommender(dataModel, neighborhood, similarity);
// java.util.List<RecommendedItem> recommenderList = recommender.recommend(1, 2);
// for (RecommendedItem recommendedItem : recommenderList) {
// System.out.println(recommendedItem);
// }
// DataModel model = new FileDataModel(new File("/home/xxx/work/mashout/d.csv"));
// UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
// UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model);
// UserBasedRecommender recommenderx = new GenericUserBasedRecommender(model, neighborhood, similarity);
// java.util.List<RecommendedItem> recommendations = recommenderx.recommend(2, 3);
// for (RecommendedItem recommendation : recommendations) {
// System.out.println(recommendation);
// }
DataModel model = new FileDataModel(new File("/home/xxx/work/mashout/data.csv"));
UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);
Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
java.util.List<RecommendedItem> recommendations = recommender.recommend(1, 2);
for (RecommendedItem recommendation : recommendations) {
System.out.println(recommendation);
}
}
}
d.csv
1,10,1.0
1,11,2.0
1,12,5.0
1,13,5.0
1,14,5.0
1,15,4.0
1,16,5.0
1,17,1.0
1,18,5.0
2,10,1.0
2,11,2.0
2,15,5.0
2,16,4.5
2,17,1.0
2,18,5.0
3,11,2.5
3,12,4.5
3,13,4.0
3,14,3.0
3,15,3.5
3,16,4.5
3,17,4.0
3,18,5.0
4,10,5.0
4,11,5.0
4,12,5.0
4,13,0.0
4,14,2.0
4,15,3.0
4,16,1.0
4,17,4.0
4,18,1.0
data.csv
1,101,5
1,102,3
1,103,2.5
2,101,2
2,102,2.5
2,103,5
2,104,2
3,101,2.5
3,104,4
3,105,4.5
3,107,5
4,101,5
4,103,3
4,104,4.5
4,106,4
5,101,4
5,102,3
5,103,2
5,104,4
5,105,3.5
5,106,4