Java Mahout-推荐评估器返回0.0

Java Mahout-推荐评估器返回0.0,java,mahout,mahout-recommender,Java,Mahout,Mahout Recommender,好吧,我对Mahout和java非常陌生。我正在尝试评估一个推荐程序,下面的代码每次都返回0.0,无论我使用的距离度量或集群大小如何。显然,它根本没有分割训练和测试数据,我也不知道为什么 非常感谢您对本代码的任何帮助 public class Example { public static void main(String[] args) throws Exception { final DataModel model = new FileDataModel(new File("FILENA

好吧,我对Mahout和java非常陌生。我正在尝试评估一个推荐程序,下面的代码每次都返回0.0,无论我使用的距离度量或集群大小如何。显然,它根本没有分割训练和测试数据,我也不知道为什么

非常感谢您对本代码的任何帮助

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

 final DataModel model = new FileDataModel(new File("FILENAME")) ;
  RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
  RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
      @Override
      public Recommender buildRecommender(DataModel dataModel) throws TasteException {
          UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
          ClusterSimilarity clusterSimilarity = new NearestNeighborClusterSimilarity(similarity);
          TreeClusteringRecommender tree = new TreeClusteringRecommender(model, clusterSimilarity, 50);
          return tree;
      }
  } ;
double score = evaluator.evaluate(recommenderBuilder, null, model, .7, 1.0);
    System.out.println(score);
    }
}

谢谢大家!

来自mahout文档

,org.apache.mahout.cf.taste.eval.DataModelBuilder,org.apache.mahout.cf.taste.model.DataModel,double,double)

evaluate()返回: “分数”表示推荐人的估计偏好与实际值的匹配程度;分数越低表示匹配越好,0表示完美匹配


我想你没问题。

我相信这是因为你在buildRecommender方法中将模型作为参数传递。在将数据模型传递给PearsonCorrelation、NearestNeighborClusterSimilarity等对象时,必须在该方法中使用数据模型

如果不这样做,您将在包含所有首选项的数据模型上进行计算,这意味着它将尝试估计首选项,发现它已经存在,然后返回值。因此,您将始终拥有完美的推荐,因为DataModel已经知道首选项