DataModel doesn't have preference values

mahout和hadoop实现简单的智能推荐系统的时候,出现了一下几个方面的错误

DataModel doesn't have preference values

意思是DataModel中没有找到初始值,通过现有的算法,我们可以初试话算法,从而实现如下:

  DataModel model = new FileDataModel(new File("F:/htt/work/recommend/src/main/resource/ratings.csv"));
             CachingRecommender cachingRecommender=new CachingRecommender(new SlopeOneRecommender(model));
             for (LongPrimitiveIterator iter=model.getUserIDs(); iter.hasNext(); ) {
                long userId=iter.nextLong();
                 List<RecommendedItem> list =cachingRecommender.recommend(userId, RECOMMENDER_NUM);
                 System.out.printf("uid:%s", userId);
                 for (RecommendedItem ritem : list) {
                        System.out.printf("(%s,%f)", ritem.getItemID(), ritem.getValue());
                    }
                    System.out.println();

我没有修改的代码如下:

  DataModel model=new FileDataModel(new File("/home/xuyao/mahout/test_data/intro.csv"));
            //UserSimilarity封装了用户间相似性的概念
            UserSimilarity similarity=new PearsonCorrelationSimilarity(model);
            //UserNeighborhood封装了最相似用户组的概念.  2是用户的邻域,指的是最相似的几个用户
            UserNeighborhood neighborhood=new NearestNUserNeighborhood(2,similarity,model);
            //Recommender推荐引擎
            Recommender recommender=new GenericUserBasedRecommender(model,neighborhood,similarity);
            List<RecommendedItem> recommendations=recommender.recommend(1,1);
            for(RecommendedItem recommendation : recommendations)
                System.out.println(recommendation);
修改之后采用的是slope算法进行

原文地址:https://www.cnblogs.com/youran-he/p/7813661.html