package com.rcd.model.recommender;
import java.util.List;
import org.apache.mahout.cf.taste.impl.common.FastByIDMap;
import org.apache.mahout.cf.taste.impl.model.GenericDataModel;
import org.apache.mahout.cf.taste.impl.model.GenericUserPreferenceArray;
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.model.DataModel;
import org.apache.mahout.cf.taste.model.PreferenceArray;
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;
public class RecommenderIntro {
public static void main(String[] args) throws Exception {
FastByIDMap<PreferenceArray> preferences = new FastByIDMap<PreferenceArray>();
PreferenceArray prefsForUser1 = new GenericUserPreferenceArray(3);// 注意这里的数字
// 这里是用来存储一个用户的元数据,这些元数据通常来自日志文件,比如浏览历史,等等,不同的业务场合,它的业务语义是不一样
prefsForUser1.setUserID(0, 1);
prefsForUser1.setItemID(0, 101);
prefsForUser1.setValue(0, 5.0f);//<1, 101, 5.0f> < 用户 ID, 物品 ID, 用户偏好 >
prefsForUser1.setItemID(1, 102);
prefsForUser1.setValue(1, 3.0f);//<1, 102, 3.0f>
prefsForUser1.setItemID(2, 103);
prefsForUser1.setValue(2, 2.5f);//<1, 103, 2.5f>
preferences.put(1l, prefsForUser1);// 在这里添加数据,userID作为key
PreferenceArray prefsForUser2 = new GenericUserPreferenceArray(4);
prefsForUser2.setUserID(0, 2);
prefsForUser2.setItemID(0, 101);//<2, 101, 2.0f>
prefsForUser2.setValue(0, 2.0f);
prefsForUser2.setItemID(1, 102);
prefsForUser2.setValue(1, 2.5f);//<2, 102, 2.5f>
prefsForUser2.setItemID(2, 103);
prefsForUser2.setValue(2, 5.0f);//<2, 103, 5.0f>
prefsForUser2.setItemID(3, 104);
prefsForUser2.setValue(3, 2.0f);//<2, 104, 2.0f>
preferences.put(2l, prefsForUser2);
PreferenceArray prefsForUser3 = new GenericUserPreferenceArray(4);
prefsForUser3.setUserID(0, 3);
prefsForUser3.setItemID(0, 101);
prefsForUser3.setValue(0, 2.5f);
prefsForUser3.setItemID(1, 104);
prefsForUser3.setValue(1, 4.0f);
prefsForUser3.setItemID(2, 105);
prefsForUser3.setValue(2, 4.5f);
prefsForUser3.setItemID(3, 107);
prefsForUser3.setValue(3, 5.0f);
preferences.put(3l, prefsForUser3);
PreferenceArray prefsForUser4 = new GenericUserPreferenceArray(4);
prefsForUser4.setUserID(0, 4);
prefsForUser4.setItemID(0, 101);
prefsForUser4.setValue(0, 5.0f);
prefsForUser4.setItemID(1, 103);
prefsForUser4.setValue(1, 3.0f);
prefsForUser4.setItemID(2, 104);
prefsForUser4.setValue(2, 4.5f);
prefsForUser4.setItemID(3, 106);
prefsForUser4.setValue(3, 4.0f);
preferences.put(4l, prefsForUser4);
PreferenceArray prefsForUser5 = new GenericUserPreferenceArray(6);
prefsForUser5.setUserID(0, 5);
prefsForUser5.setItemID(0, 101);
prefsForUser5.setValue(0, 4.0f);
prefsForUser5.setItemID(1, 102);
prefsForUser5.setValue(1, 3.0f);
prefsForUser5.setItemID(2, 103);
prefsForUser5.setValue(2, 2.0f);
prefsForUser5.setItemID(3, 104);
prefsForUser5.setValue(3, 4.0f);
prefsForUser5.setItemID(4, 105);
prefsForUser5.setValue(4, 3.5f);
prefsForUser5.setItemID(5, 106);
prefsForUser5.setValue(5, 4.0f);
preferences.put(5l, prefsForUser5);
DataModel model = new GenericDataModel(preferences);// DataModel的建立
UserSimilarity similarity = new PearsonCorrelationSimilarity(model);//计算相似度
UserNeighborhood neighborhood = new NearestNUserNeighborhood(2,similarity, model);//计算邻居
// 创建推荐引擎
Recommender recommender = new GenericUserBasedRecommender(model,neighborhood, similarity);
//为用户1推荐2个
List<RecommendedItem> recommendations = recommender.recommend(1, 2);
for (RecommendedItem recommendation : recommendations) {
System.out.println(recommendation);
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
JavaWeb实现协同过滤推荐算法的电影推荐系统
共111个文件
jar:54个
java:16个
class:16个
5星 · 超过95%的资源 需积分: 45 131 下载量 32 浏览量
2020-07-08
17:46:52
上传
评论 59
收藏 29.17MB ZIP 举报
温馨提示
项目完整可用,配合压缩包内数据库可直接运行使用。 eclipse+mysql5.7+jdk1.8 功能:推荐引擎利用特殊的信息过滤(IF,Information Filtering)技术,将不同的内容(例如电影、音乐、书籍、新闻、图片、网页等)推荐给可能感兴趣的用户。通常情况下,推荐引擎的实现是通过将用户的个人喜好与特定的参考特征进行比较,并试图预测用户对一些未评分项目的喜好程度。参考特征的选取可能是从项目本身的信息中提取的,或是基于用户所在的社会或社团环境。 根据如何抽取参考特征,我们可以将推荐引擎分为以下四大类: • 基于内容的推荐引擎:它将计算得到并推荐给用户一些与该用户已选择过的项目相似的内容。例如,当你在网上购书时,你总是购买与历史相关的书籍,那么基于内容的推荐引擎就会给你推荐一些热门的历史方面的书籍。 • 基于协同过滤的推荐引擎:它将推荐给用户一些与该用户品味相似的其他用户喜欢的内容。例如,当你在网上买衣服时,基于协同过滤的推荐引擎会根据你的历史购买记录或是浏览记录,分析出你的穿衣品位,并找到与你品味相似的一些用户,将他们浏览和购买的衣服推荐给你。 • 基于关联规则的推荐引擎:它将推荐给用户一些采用关联规则发现算法计算出的内容。关联规则的发现算法有很多,如 Apriori、AprioriTid、DHP、FP-tree 等。 • 混合推荐引擎:结合以上各种,得到一个更加全面的推荐效果。
资源推荐
资源详情
资源评论
收起资源包目录
JavaWeb实现协同过滤推荐算法的电影推荐系统 (111个子文件)
GetMovieInfo.class 4KB
RecommenderIntro.class 4KB
ImportMovies.class 4KB
ImportRatings.class 3KB
Movie.class 3KB
RecomendServlet.class 3KB
MyUserBasedRecommender.class 2KB
MyItemBasedRecommender.class 2KB
DataBaseUtil.class 2KB
MySlopeOneRecommender.class 2KB
MyDataModel.class 1KB
StringUtil.class 1KB
MovieInfo.class 1KB
DBUtil.class 1KB
ConnectToMySQL.class 1KB
Rating.class 1KB
.classpath 2KB
org.eclipse.wst.common.component 565B
ratings.dat 23.45MB
movies.dat 167KB
users.dat 131KB
hadoop-core-0.20.2.jar 2.56MB
lucene-core-2.9.1.jar 1.05MB
mahout-collections-0.3.jar 1.04MB
mahout-core-0.3.jar 993KB
mysql-connector-java-5.1.30.jar 932KB
javaee-api-5.jar 656KB
google-collections-1.0-rc2.jar 559KB
commons-collections-3.1.jar 546KB
mahout-math-0.3.jar 480KB
velocity-1.5.jar 383KB
jets3t-0.7.1.jar 369KB
commons-math-1.2.jar 331KB
cglib-nodep-2.2.jar 315KB
commons-httpclient-3.1.jar 298KB
commons-lang-2.4.jar 256KB
plexus-utils-1.5.6.jar 245KB
mahout-examples-0.3.jar 234KB
junit-4.7.jar 227KB
lucene-benchmark-2.9.1.jar 199KB
lucene-analyzers-2.9.1.jar 197KB
plexus-container-default-1.0-alpha-9.jar 191KB
commons-beanutils-1.7.0.jar 184KB
mahout-utils-0.3.jar 168KB
gson-1.4.jar 162KB
commons-digester-1.7.jar 137KB
commons-dbcp-1.2.2.jar 119KB
xml-apis-1.0.b2.jar 107KB
easymock-2.5.2.jar 92KB
commons-cli-2.0-mahout.jar 89KB
commons-pool-1.4.jar 85KB
maven-artifact-2.0.2.jar 77KB
watchmaker-framework-0.6.2.jar 75KB
oro-2.0.8.jar 64KB
commons-logging-1.2.jar 60KB
lucene-demos-2.9.1.jar 55KB
lucene-memory-2.9.1.jar 55KB
maven-artifact-manager-2.0.2.jar 48KB
uncommons-maths-1.2.jar 47KB
lucene-highlighter-2.9.1.jar 47KB
commons-codec-1.3.jar 46KB
watchmaker-swing-0.6.2.jar 43KB
wagon-provider-api-1.0-alpha-6.jar 42KB
commons-cli-1.2.jar 40KB
maven-shared-io-1.1.jar 39KB
file-management-1.2.1.jar 37KB
classworlds-1.1-alpha-2.jar 37KB
easymockclassextension-2.5.2.jar 36KB
objenesis-1.2.jar 35KB
xpp3_min-1.1.4c.jar 24KB
slf4j-api-1.5.8.jar 23KB
maven-repository-metadata-2.0.2.jar 19KB
lucene-wikipedia-2.9.1.jar 18KB
maven-plugin-api-2.0.6.jar 13KB
slf4j-jcl-1.5.8.jar 7KB
RecommenderIntro.java 4KB
GetMovieInfo.java 3KB
ImportMovies.java 2KB
RecomendServlet.java 2KB
ImportRatings.java 2KB
Movie.java 2KB
MyUserBasedRecommender.java 2KB
DataBaseUtil.java 2KB
MyItemBasedRecommender.java 1KB
MySlopeOneRecommender.java 1KB
MyDataModel.java 1KB
DBUtil.java 816B
MovieInfo.java 700B
Rating.java 644B
ConnectToMySQL.java 541B
StringUtil.java 404B
p2969.jpg 414KB
jquery-1.11.1.js 276KB
jquery-1.11.1.min.js 94KB
jquery.backstretch.js 12KB
jquery.backstretch.min.js 4KB
scripts.js 709B
placeholder.js 126B
.jsdtscope 567B
recommendResult.jsp 2KB
共 111 条
- 1
- 2
资源评论
- FangkunKr8s2021-12-07不错的,能求个微信吗,想咨询一些问题
Beyond
- 粉丝: 8102
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功