mahout 推荐系统示例
来源:互联网 发布:大数据挖掘工程师 编辑:程序博客网 时间:2024/05/16 04:44
建立java工程,导入需要的jar包
准备好测试的数据:D:\text.txt
1,101,5
1,102,3
1,103,2.5
2,101,2
2,102,2.5
2,103,5
2,104,2
3,101,2.5
3,104,4
3,105,4.5
3,107,5
4,101,5
4,103,3
4,104,4.5
4,106,4
5,101,4
5,102,3
5,103,2
5,104,4
5,105,3.5
5,106,4
java代码
import java.io.*;import java.util.*;
import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.impl.model.file.*;
import org.apache.mahout.cf.taste.impl.neighborhood.*;
import org.apache.mahout.cf.taste.impl.recommender.*;
import org.apache.mahout.cf.taste.impl.recommender.slopeone.SlopeOneRecommender;
import org.apache.mahout.cf.taste.impl.similarity.*;
import org.apache.mahout.cf.taste.model.*;
import org.apache.mahout.cf.taste.neighborhood.*;
import org.apache.mahout.cf.taste.recommender.*;
import org.apache.mahout.cf.taste.similarity.*;
public class TestMahout {
// private TestMahout(){};
public static void main(String args[]) throws Exception {
TestMahout testMahout = new TestMahout();
System.out.println("The baseUserCF Result:");
testMahout.baseUserCF();
System.out.println("The baseItemCF Result:");
testMahout.baseItemCF();
System.out.println("The baseSlopOne Result:");
testMahout.baseSlopOne();
}
//基于用户相似度的协同过滤推荐实现
public void baseUserCF(){
// 1,构建模型
DataModel dataModel;
try {
dataModel = new FileDataModel(new File("d://test.txt"));
// 2,计算相似度
UserSimilarity userSimilarity = new PearsonCorrelationSimilarity(dataModel);
// 3,查找k紧邻
UserNeighborhood userNeighborhood = new NearestNUserNeighborhood(2,
userSimilarity, dataModel);
// 4,构造推荐引擎
Recommender recommender = new GenericUserBasedRecommender(dataModel,
userNeighborhood, userSimilarity);
// 为用户i推荐两个Item
for (int i = 1; i < 6; i++) {
System.out.println("recommand for user:" + i);
List<RecommendedItem> recommendations = recommender.recommend(i, 2);
for (RecommendedItem recommendation : recommendations) {
System.out.println(recommendation);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TasteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//基于内容相似度的协同过滤推荐实现
public void baseItemCF(){
DataModel model;
try {
model = new FileDataModel(new File("d://test.txt"));
ItemSimilarity itemsimilarity =new PearsonCorrelationSimilarity(model);
Recommender recommender= new GenericItemBasedRecommender(model,itemsimilarity);
List<RecommendedItem> recommendations =recommender.recommend(1, 1);
for(RecommendedItem recommendation :recommendations){
System.out.println(recommendation);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TasteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//基于SlopOne的推荐实现
public void baseSlopOne(){
DataModel model;
try {
model = new FileDataModel(new File("d://test.txt"));
Recommender recommender= new SlopeOneRecommender(model);
List<RecommendedItem> recommendations =recommender.recommend(1, 1);
for(RecommendedItem recommendation :recommendations){
System.out.println(recommendation);
}
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("Io Error");
e.printStackTrace();
} catch (TasteException e) {
// TODO Auto-generated catch block
System.out.println("Taste Error");
e.printStackTrace();
}
}
}
运行结果:
The baseUserCF Result:----------------------------------
2013-2-26 19:18:09 org.slf4j.impl.JCLLoggerAdapter info
信息: Creating FileDataModel for file d:\test.txt
2013-2-26 19:18:09 org.slf4j.impl.JCLLoggerAdapter info
信息: Reading file info...
2013-2-26 19:18:09 org.slf4j.impl.JCLLoggerAdapter info
信息: Read lines: 21
2013-2-26 19:18:09 org.slf4j.impl.JCLLoggerAdapter info
信息: Reading file info...
2013-2-26 19:18:09 org.slf4j.impl.JCLLoggerAdapter info
信息: Read lines: 21
2013-2-26 19:18:09 org.slf4j.impl.JCLLoggerAdapter info
信息: Processed 5 users
recommand for user:1
RecommendedItem[item:104, value:4.257081]
RecommendedItem[item:106, value:4.0]
recommand for user:2
recommand for user:3
RecommendedItem[item:106, value:4.0]
RecommendedItem[item:103, value:2.5905366]
recommand for user:4
RecommendedItem[item:102, value:3.0]
recommand for user:5
The baseItemCF Result:----------------------------------
2013-2-26 19:18:10 org.slf4j.impl.JCLLoggerAdapter info
信息: Creating FileDataModel for file d:\test.txt
2013-2-26 19:18:10 org.slf4j.impl.JCLLoggerAdapter info
信息: Reading file info...
2013-2-26 19:18:10 org.slf4j.impl.JCLLoggerAdapter info
信息: Read lines: 21
2013-2-26 19:18:10 org.slf4j.impl.JCLLoggerAdapter info
信息: Reading file info...
2013-2-26 19:18:10 org.slf4j.impl.JCLLoggerAdapter info
信息: Read lines: 21
2013-2-26 19:18:10 org.slf4j.impl.JCLLoggerAdapter info
信息: Processed 5 users
RecommendedItem[item:104, value:5.0]
The baseSlopOne Result:---------------------------------
2013-2-26 19:18:10 org.slf4j.impl.JCLLoggerAdapter info
信息: Creating FileDataModel for file d:\test.txt
2013-2-26 19:18:10 org.slf4j.impl.JCLLoggerAdapter info
信息: Reading file info...
2013-2-26 19:18:10 org.slf4j.impl.JCLLoggerAdapter info
信息: Read lines: 21
2013-2-26 19:18:10 org.slf4j.impl.JCLLoggerAdapter info
信息: Reading file info...
2013-2-26 19:18:10 org.slf4j.impl.JCLLoggerAdapter info
信息: Read lines: 21
2013-2-26 19:18:10 org.slf4j.impl.JCLLoggerAdapter info
信息: Processed 5 users
2013-2-26 19:18:10 org.slf4j.impl.JCLLoggerAdapter info
信息: Building average diffs...
RecommendedItem[item:105, value:5.75]
- mahout 推荐系统示例
- mahout 推荐系统示例
- mahout 推荐系统
- Mahout推荐系统构建
- mahout 推荐系统
- Hadoop Mahout 推荐系统
- Mahout推荐系统
- mahout入门之推荐系统
- Mahout构建图书推荐系统
- Mahout构建图书推荐系统
- Mahout--简单推荐系统Demo
- Mahout构建图书推荐系统
- Mahout构建图书推荐系统【一起学Mahout】
- mahout学习(二)--基于Mahout的电影推荐系统
- 推荐系统思考小结(基于Mahout)
- 基于Mahout的电影推荐系统
- 基于Mahout的电影推荐系统
- 推荐系统思考小结(基于Mahout)
- Linux的/proc目录
- 网络程序设计--网络对时
- Java中日期格式的转换问题
- 网络程序设计--TCP通信(服务器端)
- 排序专题(三) / 稳定的内部排序 / 递归的2-路归并排序
- mahout 推荐系统示例
- 网络程序设计--TCP通信(客户端)
- Verify the existence of the above class
- 网络程序设计--UDP通信(服务器)
- 网络程序设计--UDP通信(客户端)
- [HBase] HBase Block Cache实现机制分析
- QT 隐式共享 Implicit Sharing
- Access,SqlServer, Oracle, DB2 常用的几个函数
- Android如何防止apk程序被反编译