Java Mahout-推荐评估器返回0.0
好吧,我对Mahout和java非常陌生。我正在尝试评估一个推荐程序,下面的代码每次都返回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
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已经知道首选项