/*
* 这段程序是使用GroupLens定制的DataModel数据模型
* 因为这里的数据是以逗号隔开的。
* 这里我把数据量加大,变成了20M的数据
* 这里使用的数据模型是对于GroupLens定制的GroupLensDataModel
* */
package byuser;
import java.io.File;
import java.io.IOException;
import java.util.List;
import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.impl.eval.LoadEvaluator;
import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood;
import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.recommender.Recommender;
import org.apache.mahout.cf.taste.similarity.UserSimilarity;
import org.apache.mahout.cf.taste.similarity.precompute.example.GroupLensDataModel;
public class GenericUserRecommeder_GroupLens {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
//进行数据的装载
//生成数据模型
DataModel model = new GroupLensDataModel(new File("E:\\mahout项目\\examples\\ratings.dat"));
UserSimilarity similarity = new org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity(model);
UserNeighborhood neighborhood = new NearestNUserNeighborhood(100, similarity, model);
//生成推荐引擎
Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
LoadEvaluator.runLoad(recommender);
//为用户已推荐一件商品recommend( , );其中参数的意思是:第几个人,然后推荐几件商品
List<RecommendedItem> recommendations = recommender.recommend(1, 1);
for(RecommendedItem recommendation : recommendations){
System.out.println("GroupLens定制,为您推荐的商品是:" + recommendation);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TasteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//这里的数据结果会出现很慢,因为这里的数据我跑的是1M的数据。
如图:
原文:http://blog.csdn.net/u012965373/article/details/45644975