mahout笔记:基于用户的推荐例子


数据准备:

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
代码:


public class SampleRecommender {

	
	public static void main(String[] args) throws TasteException, IOException {
		
		DataModel model = new FileDataModel(new File("D:/data/datasets.csv"));
		UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
		UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model);
		UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
		
		List  recommendations = recommender.recommend(2, 3);
		for (RecommendedItem recommendation : recommendations) {
		  System.out.println(recommendation);
		}
	}

}


运行结果:

RecommendedItem[item:12, value:4.8328104]
RecommendedItem[item:13, value:4.6656213]
RecommendedItem[item:14, value:4.331242]


步骤:
1、建立数据模型


2、通过用户的item的品味计算用户相似性。


3、规定推荐系统使用相似性大于0.1


4、使用前面对象创建推荐系统


5、测试推荐系统结果


推荐系统评估:

public class EvaluateRecommender {

	public static class MyRecommenderBuilder implements RecommenderBuilder {
		
		@Override
		public Recommender buildRecommender(DataModel dataModel)
				throws TasteException {
			UserSimilarity similarity = new PearsonCorrelationSimilarity(dataModel);
			UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, dataModel);
			return new GenericUserBasedRecommender(dataModel, neighborhood, similarity);
			
		}
		
	}
	
	public static void main(String[] args) throws IOException, TasteException {
		DataModel model = new FileDataModel(new File("D:/data/datasets.csv"));
		RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
		RecommenderBuilder builder = new MyRecommenderBuilder();
		double result = evaluator.evaluate(builder, null, model, 0.9, 1.0);
		System.out.println(result);
		
		
	}

}



你可能感兴趣的:(挖掘)