Libimseti的用户推荐系统
来源:互联网 发布:交英语的软件 编辑:程序博客网 时间:2024/05/17 06:14
<span style="font-size:18px;">/*** * @author YangXin * @date 2016/2/19 * @info Libimseti的用户推荐系统 * 下列代码显示了一个推荐程序的实现,其中包含了前面所讲的基于用户的推荐引擎 */package unitFive;import java.io.File;import java.io.IOException;import java.util.Collection;import java.util.List;import org.apache.mahout.cf.taste.common.Refreshable;import org.apache.mahout.cf.taste.common.TasteException;import org.apache.mahout.cf.taste.impl.common.FastIDSet;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.similarity.EuclideanDistanceSimilarity;import org.apache.mahout.cf.taste.model.DataModel;import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;import org.apache.mahout.cf.taste.recommender.IDRescorer;import org.apache.mahout.cf.taste.recommender.RecommendedItem;import org.apache.mahout.cf.taste.recommender.Recommender;import org.apache.mahout.cf.taste.similarity.UserSimilarity;public class LibimsetiRecommender implements Recommender {private final Recommender delegate;private final DataModel model;private final FastIDSet men;private final FastIDSet women;private final FastIDSet usersRateMoreMen;private final FastIDSet usersRateLessMen;//在生产环境下需要public LibimsetiRecommender() throws TasteException, IOException{this(new FileDataModel(readResourceToTempFile("E:\\mahout项目\\examples\\ratings.dat")));}/*** * 此方法封装了如何将资源转换为加载的文件,此处未实现 * @param string * @return */private static File readResourceToTempFile(String string) {// TODO Auto-generated method stubreturn null;}//在构建基于用户的推荐程序public LibimsetiRecommender(DataModel model) throws TasteException, IOException {// TODO Auto-generated constructor stubUserSimilarity similarity = new EuclideanDistanceSimilarity(model);UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);delegate = new GenericUserBasedRecommender(model, neighboehood, similarity);this.model = model;FastIDSet[] menWomen = GenderRescorer.parseMenWomen(readResourceToTempFile("E:\\mahout项目\\examples\\gender.dat"));men = menWomen[0];women = menWomen[1];usersRateMoreMen = new FastIDSet(50000);usersRateLessMen = new FastIDSet(50000);}//在所有推荐上使用@Overridepublic List<RecommendedItem> recommend(long userID, int howMany)throws TasteException {// TODO Auto-generated method stubIDRescorer rescorer = new GenderRescorer(men, women, userID, usersRateMoreMen, userRateLessMen, userID, model);return delegate.recommend(userID, howMany, rescorer);}@Overridepublic List<RecommendedItem> recommend(long userID, int howMany, IDRescorer rescorer)throws TasteException {// TODO Auto-generated method stubreturn delegate.recommend(userID, howMany, rescorer);}@Overridepublic float estimatePreference(long userID, long itemID) throws TasteException {// TODO Auto-generated method stubIDRescorer rescorer = new GenderRescorer(men, women, userID, usersRateMoreMen,usersRateLessMen, userID, model);return (float)rescorer.rescore(itemID, delegate.estimatePreference(userID, itemID));}@Overridepublic void setPreference(long userID, long itemID, float value)throws TasteException {// TODO Auto-generated method stubdelegate.setPreference(userID, itemID, value);}@Overridepublic void removePreference(long userID, long itemID) throws TasteException {// TODO Auto-generated method stubdelegate.removePreference(userID, itemID);}@Overridepublic DataModel getDataModel() {// TODO Auto-generated method stubreturn delegate.getDataModel();}@Overridepublic void refresh(Collection<Refreshable> alreadyRefreshed) {// TODO Auto-generated method stubdelegate.refresh(alreadyRefreshed);}@Overridepublic List<RecommendedItem> recommend(long userID, int howMang, boolean arg2)throws TasteException {// TODO Auto-generated method stubreturn null;}@Overridepublic List<RecommendedItem> recommend(long arg0, int arg1,IDRescorer arg2, boolean arg3) throws TasteException {// TODO Auto-generated method stubreturn null;}@Overridepublic void refresh(Collection<Refreshable> arg0) {// TODO Auto-generated method stub}@Overridepublic List<RecommendedItem> recommend(long arg0, int arg1)throws TasteException {// TODO Auto-generated method stubreturn null;}@Overridepublic List<RecommendedItem> recommend(long arg0, int arg1, boolean arg2)throws TasteException {// TODO Auto-generated method stubreturn null;}@Overridepublic List<RecommendedItem> recommend(long arg0, int arg1, IDRescorer arg2)throws TasteException {// TODO Auto-generated method stubreturn null;}@Overridepublic List<RecommendedItem> recommend(long arg0, int arg1,IDRescorer arg2, boolean arg3) throws TasteException {// TODO Auto-generated method stubreturn null;}}</span>
0 0
- Libimseti的用户推荐系统
- Libimseti上的匿名用户推荐系统
- Libimseti推荐系统
- 《推荐系统实战》-基于用户的系统过滤推荐
- 《推荐系统》基于标签的用户推荐系统
- 《推荐系统》基于标签的用户推荐系统
- 基于用户行为的推荐系统
- 商品用户推荐系统的研究
- 推荐系统-利用用户的行为信息
- 用户画像与推荐系统的关系
- 推荐系统自己实践-----基于用户的推荐
- 推荐系统读书笔记一--基于用户行为的推荐
- 基于用户的协作性过滤推荐系统(为用户推荐影片)
- 基于用户的协同过滤算法的电影推荐系统
- 用户推荐系统_python 代码
- 推荐系统中的用户偏好
- 蛙蛙推荐:偶做的用户管理系统
- 推荐系统(基于用户的协同过滤)入门总结
- 为什么自定义ViewGroup ondraw方法不会被调用
- C语言控制结构
- android 标点符号的全角半角转换
- Android开发以备后用
- Android访问网络
- Libimseti的用户推荐系统
- 《VR入门系列教程》之14---面向大众的Unity3D
- 如何设计高效合理的MySQl查询语句
- select poll epoll
- Response.AddHeader使用实例
- 【解题报告】2015ACM/ICPC亚洲区沈阳站
- js内置对象详解
- 利用监听者模式实现后台多文件下载的监听
- Android应用程序如何获得系统签名权限02