本实例是基于用户推荐的事例教程,来源于apache mahout http://mahout.apache.org/users/recommender/userbased-5-minutes.html
1. 准备数据。利用mahout 提供的简单的数据,生成数据文件dataset.csv。每一列分别表明 用户ID ItemID value(表明一种关系,用户对该商品的评级)
1,10,1.0
1,11,2.0
1,12,5.0
1,13,5.0
1,14,5.0
1,15,4.0
1,16,5.0
1,17,1.0
1,18,5.0
2,10,1.0
2,11,2.0
2,15,5.0
2,16,4.5
2,17,1.0
2,18,5.0
3,11,2.5
3,12,4.5
3,13,4.0
3,14,3.0
3,15,3.5
3,16,4.5
3,17,4.0
3,18,5.0
4,10,5.0
4,11,5.0
4,12,5.0
4,13,0.0
4,14,2.0
4,15,3.0
4,16,1.0
4,17,4.0
4,18,1.0
2. 构造数据模型。创建一个类,命名为SampleRecommender。
DataModel model = new FileDataModel(new File("/path/to/dataset.csv"));
3. 计算用户的相关度。
UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
4. 定义相关度为多少的用户是我们期望的。
UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model);
5. 创建用户推荐
UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
6. 输出推荐结果
List recommendations = recommender.recommend(2, 3);
for (RecommendedItem recommendation : recommendations) {
System.out.println(recommendation);
}
7. 完整的代码如下
import java.io.File;
import java.io.IOException;
import java.util.List;
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.impl.neighborhood.ThresholdUserNeighborhood;
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.neighborhood.UserNeighborhood;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.recommender.UserBasedRecommender;
import org.apache.mahout.cf.taste.similarity.UserSimilarity;
/**
* ClassName:SampleRecommender <br/>
* Function: TODO ADD FUNCTION. <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2014年3月29日 上午9:56:31 <br/>
* @author zhangzhaoyu
* @version
* @since JDK 1.7
* @see
*/
public class SampleRecommender {
public static void main(String[] args) throws IOException, Exception {
DataModel model = new FileDataModel(new File("src/main/java/edu/bjfu/imovie/mahout/dataset.csv"));
UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model);
UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
List<RecommendedItem> recommendations = recommender.recommend(2, 3);
for (RecommendedItem reItem : recommendations) {
System.out.println(reItem);
}
}
}
8. 输出结果
RecommendedItem[item:12, value:4.8328104]
RecommendedItem[item:13, value:4.6656213]
RecommendedItem[item:14, value:4.331242]
9. Maven 导入依赖包
<!-- mahout -->
<dependency>
<groupId>org.apache.mahout</groupId>
<artifactId>mahout-core</artifactId>
<version>${mahout.version}</version>
</dependency>
<dependency>
<groupId>org.apache.mahout</groupId>
<artifactId>mahout-integration</artifactId>
<version>${mahout.version}</version>
</dependency>
<dependency>
<groupId>org.apache.mahout</groupId>
<artifactId>mahout-math</artifactId>
<version>${mahout.version}</version>
</dependency>
分享到:
相关推荐
mahout入门 下载即可运行 适合新手入门
Mahout机器学习领域分布式计算框架,详细介绍PPT
mahout 入门中文材料,是IBM文章汇总,值得一看
mahout_help,mahout的java api帮助文档,可以帮你更轻松掌握mahout
maven_mahout_template-mahout-0.8
MAHOUT实战 MAHOUT IN ACTION
mahoutAlgorithms源码分析 mahout代码解析
spring-mahout-demo-----一个简单的spring-mahout结合的例子,是很好的学习开发思路的例子。
mahout-examples-0.11.1 mahout-examples-0.11.1-job mahout-h2o_2.10-0.11.1 mahout-h2o_2.10-0.11.1-dependency-reduced mahout-hdfs-0.11.1 mahout-integration-0.11.1 mahout-math-0.11.1 mahout-math-0.11.1 ...
Mahout是一个Java的机器学习库。Mahout的完整源代码,基于maven,可以轻易导入工程中
Apache Mahout 是 Apache Software Foundation (ASF) 开发的一个全新的开源项目,其主要目标是创建一些可伸缩的机器学习算法,供开发人员在 Apache 在许可下免费使用。 机器学习 • 机器学习是人工智能的一个分支,...
mahout-integration-0.7mahout-integration-0.7mahout-integration-0.7mahout-integration-0.7
Mahout 官方文档,简单介绍Mahout概念及其安装和简单使用
Mahout0.8_API 喜欢的人就请下载吧
If you are a Java developer and want to use Mahout and Machine Learning to solve Big Data analytics use-cases then this book is for you. Familiarity with shell-scripts is assumed but no prior ...
mahout,朴素贝叶斯分类,中文分词,mahout,朴素贝叶斯分类,中文分词,
Apache Mahout 简介
Mahout支持K-Means等聚类算法,在此zip包中已经有打好jar包的资源,不需要用户再打jar包,可以直接使用。
9.Hadoop入门进阶课程_第9周_Mahout介绍、安装与应用案例.pdf
mahout中的贝叶斯算法的拓展开发包,提供了相关接口可以供用户调用,直接即可跑出结果,相关运行方式参考blog《mahout贝叶斯算法开发思路(拓展篇)》