我下面的代碼示例如下:Mahout中GenericRecommenderIRStatsEvaluator的非法精度?
RandomUtils.useTestSeed();
DataModel model = new FileDataModel(new File(file));
RecommenderIRStatsEvaluator evaluator = new GenericRecommenderIRStatsEvaluator();
RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
public Recommender buildRecommender(DataModel model)
throws TasteException {
UserSimilarity similarity = new PearsonCorrelationSimilarity(
model);
UserNeighborhood neighborhood = new NearestNUserNeighborhood(2,
similarity, model);
return new GenericUserBasedRecommender(model, neighborhood,
similarity);
}
};
IRStatistics stats = evaluator.evaluate(recommenderBuilder, null,
model, null, 4, 4, 0.5);
System.out.println(stats.getPrecision());
System.out.println(stats.getRecall());
和文件中的數據是:
1,101,5.0
1,102,3.0
1,103,2.5
2,101,2.0
2,102,2.5
2,103,5.0
2,104,2.0
3,101,2.5
3,104,4.0
3,105,4.5
3,107,5.0
4,101,5.0
4,103,3.0
4,104,4.5
4,106,4.0
5,101,4.0
5,102,3.0
5,103,2.0
5,104,4.0
5,105,3.5
5,106,4.0
當在數據文件上運行上述代碼中,我得到了
java.lang.IllegalArgumentException:非法精度:NaN 爲什麼會發生這種情況?我找到了一些與here相關的內容,但它發佈在2009年 ,無法解釋我的困惑。
你能解釋一下我@Sean歐文 –