我想建立一个基本的电影推荐系统。我搜索并找到了 apache mahout。我使用了一些方法,但我不知道如何使用这些结果。
import java.io.File;
import java.io.IOException;
import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.eval.RecommenderBuilder;
import org.apache.mahout.cf.taste.eval.RecommenderEvaluator;
import org.apache.mahout.cf.taste.impl.eval.RMSRecommenderEvaluator;
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood;
import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
import org.apache.mahout.cf.taste.impl.similarity.TanimotoCoefficientSimilarity;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
import org.apache.mahout.cf.taste.recommender.Recommender;
import org.apache.mahout.cf.taste.similarity.UserSimilarity;
public class error {
public static double evaluate(DataModel model){
RecommenderEvaluator evaluator = new RMSRecommenderEvaluator();
RecommenderBuilder builder = new RecommenderBuilder() {
@Override
public Recommender buildRecommender(DataModel model) throws TasteException {
UserSimilarity similarity = new TanimotoCoefficientSimilarity(model);
UserNeighborhood neighborhood = new NearestNUserNeighborhood(50, similarity, model);
return new GenericUserBasedRecommender(model, neighborhood, similarity);
}
};
double score = 0;
try {
score = evaluator.evaluate(builder, null, model, 0.7, 1.0);
} catch (TasteException e) {
}
System.out.println(score);
return score;
}
public static void main(String[] args) throws IOException, TasteException {
DataModel model = new FileDataModel(new File("u1.base"));
evaluate(model);
}
}
和这样的结果
2014 年 3 月 3 日下午 2:06:44 org.slf4j.impl.JCLLoggerAdapter 信息信息:为文件 u1.base 创建 FileDataModel 2014 年 3 月 3 日下午 2:06:44 org.slf4j.impl.JCLLoggerAdapter 信息信息:读取文件信息... 2014 年 3 月 3 日下午 2:06:44 org.slf4j.impl.JCLLoggerAdapter 信息信息:读取行:80000 2014 年 3 月 2:06:44 PM org.slf4j.impl.JCLLoggerAdapter 信息信息:已处理 943 个用户2014 年 3 月 3 日下午 2:06:44 org.slf4j.impl.JCLLoggerAdapter 信息信息:使用 FileDataModel[dataFile:C:\Users\HydrojaN\Documents\NetBeansProjects\JavaApplication1\u1.base] 的 0.7 开始评估] 2014 年 3 月下午 2:06:44 org.slf4j.impl.JCLLoggerAdapter 信息信息:已处理 943 个用户 Şub 03, 2014 2:06:44 PM org.slf4j.impl.JCLLoggerAdapter 信息信息:开始评估 941 个用户 Şub 03, 2014 2: 06:44 PM org.slf4j.impl.JCLLoggerAdapter 信息信息:4 个线程中 941 个任务的开始时间 Şub 03, 2014 2:06:45 PM org.slf4j.impl.JCLLoggerAdapter 信息信息:每个推荐的平均时间:193ms Şub 03, 2014 2:06:45 PM org.slf4j.impl。 JCLLoggerAdapter 信息信息:使用的近似内存:86MB / 276MB Şub 03, 2014 2:06:45 PM org.slf4j.impl.JCLLoggerAdapter 信息信息:在 29 种情况下无法推荐
1.0364950141746245
Şub 03, 2014 2:07:49 PM org.slf4j.impl.JCLLoggerAdapter info INFO:评估结果:1.0364950141746245 BUILD SUCCESSFUL(总时间:1 分 5 秒)