2013-02-05 85 views
0

我想使用示例数据“intro.csv”使用下面的代码运行KnnItemBasedRecommender,但是我得到空集作为结果。Mahout建议返回空集

public static void main(String[] args) throws Exception { 

     DataModel model = NeuvidisData.convertToDataModel(); 

     //RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator(); 

     RecommenderBuilder recommenderBuilder = new RecommenderBuilder() { 
      @Override 
      public Recommender buildRecommender(DataModel model) { 
       ItemSimilarity similarity = new LogLikelihoodSimilarity(model); 
       Optimizer optimizer = new ConjugateGradientOptimizer(); 
       return new KnnItemBasedRecommender(model, similarity, optimizer, 2); 
      } 
     }; 

     Recommender rec = recommenderBuilder.buildRecommender(model); 
     List<RecommendedItem> rcList = rec.recommend(1, 2); 

     for(RecommendedItem item:rcList) 
     { 
      System.out.println("item:"); 
      System.out.println(item); 
     } 
    } 

有人能帮助我吗?

回答

0

以下代码适用于我。

   ItemSimilarity similarity = new PearsonCorrelationSimilarity(dataModel); 
       Optimizer optimizer = new ConjugateGradientOptimizer(); 
       Recommender recommender = new KnnItemBasedRecommender(dataModel, similarity, optimizer, 5); 

使用PearsonCorrelationSimilarity而不是LogLikelihoodSimilarity。

此解决方案可能适用于特定的一组数据。所以,这个解决方案基于你的数据集。

0

大概是因为您的数据太小或稀疏,无法为使用此算法的用户1提供建议。没有这些数据就很难说。

+0

谢谢你的回应。我已经上传数据文件,这里是链接(https://docs.google.com/file/d/0B-TfUyCFoQ_3X0kwN3ZQeDlMdTA/edit?usp=sharing) – Swamy

+0

我用KnnItemBasedRecommender用不同的数据集尝试过,我发现结果取决于DataModel的构建方式。当我使用LogLikelihoodSimilarity而PearsonCorrelationSimilarity工作正常时,没有结果。请通过一些灯光。 – Swamy

+0

希望你能够访问上传的数据。如果您需要更多输入,请告诉我。先谢谢你。 – Swamy