本实例是基于用户推荐的事例教程,来源于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,本书《Mahout in Action》提供了一条快速入门的路径,包括介绍性章节,详细阐述推荐系统、聚类和分类的原理,以及如何在实际项目中应用这些技术。书中还包含具体的代码示例和实践经验,适合...
### Hadoop快速入门知识点梳理 #### 一、Hadoop概览与背景介绍 **1.1 何为Hadoop** - **定义**:Hadoop是一个由Apache基金会支持的开源软件框架,旨在通过集群中的普通商用硬件来处理大量数据集。 - **核心功能**...
### Hadoop快速入门知识点梳理 #### 一、Hadoop概览 **1.1 Hadoop定义** - **定义**:Hadoop是Apache基金会旗下的开源软件框架,主要用于在大规模集群环境中处理和存储海量数据。 - **核心特点**:通过提供分布式...
- **生态系统**:广义上的 Hadoop 生态系统不仅包括核心的 HDFS、YARN 和 MapReduce,还包括一系列周边工具和服务,如 Hive、HBase、Zookeeper、Mahout 等。 - **应用场景**:Hadoop 在数据服务基础平台建设、用户...
在清华大学的精品大数据课程中,这一部分详细介绍了几个关键的大数据挖掘工具,如Mahout和Spark MLlib。 【Apache Mahout】是一个基于Java的开源机器学习库,曾是Apache Lucene的子项目,后来发展为独立的顶级项目...
大数据开发入门指南是一份全面介绍大数据领域的文档,涵盖了从基础概念到实际应用的各个环节,旨在帮助初学者系统地理解和掌握大数据技术。以下是这份指南中可能包含的重要知识点: 1. **大数据概念**:大数据指的...
第一部分 NoSQL入门 第1章 NoSQL的概念及适用范围 2 1.1 定义和介绍 3 1.1.1 背景与历史 3 1.1.2 大数据 5 1.1.3 可扩展性 7 1.1.4 MapReduce 8 1.2 面向列的有序存储 9 1.3 键/值存储 11 1.4 文档数据库 ...
7. **范文/模板/素材**:这个资源可能作为一个学习模板,帮助初学者快速入门数据挖掘项目,理解Java代码组织和数据挖掘流程。同时,它也可以作为其他项目的基础,通过修改和扩展以适应不同的数据挖掘需求。 总之,...
这本书详尽地介绍了Hadoop的核心组件、工作原理以及实际应用,旨在帮助初学者快速入门,并为有经验的开发者提供深入的洞察。 Hadoop是一个开源的分布式计算框架,最初由Apache软件基金会开发,其设计目标是处理和...
紧接着,本书详细阐述了机器学习可以解决哪些类型的问题,并提供了一个应用机器学习工作流的快速入门,这包括数据转换、数据约简、无监督学习(如发现相似项,使用欧几里得距离和非欧几里得距离)、维度的诅咒、聚类...
应用机器学习快速入门 用于机器学习的 Java 工具和库 基本算法:分类、回归和聚类 客户关系预测 亲和力分析 带有 Apache Mahout 的推荐引擎 欺诈和异常检测 使用 DeepLearning4java 进行图像识别 使用手机传感器进行...
不同于一般的入门课程,本课程将重点放在企业级项目的实战操作上,通过真实案例的学习,使学员能够掌握大数据处理的核心技能。 **培训目的:** - 培养云计算领域中大数据方向的高级开发和运维人才。 - 提升学员在...
Mahout是机器学习库,Spark提供快速、通用的计算引擎,适用于批处理、交互式查询和流处理。Storm是实时计算框架,用于实时数据处理。 **大数据数据采集:** Python和Scala是两种常用的大数据编程语言,它们在数据...
3. **Hadoop生态系统**:围绕Hadoop发展出了一系列组件,如HBase(分布式数据库)、Hive(数据仓库工具)、Pig(数据分析工具)、Zookeeper(协调服务)、Spark(快速数据处理引擎)等,它们共同构成了大数据处理的...
通过以上分析可以看出,《Learning Apache Flink》这本书不仅为读者提供了全面的Flink入门指南,还深入探讨了如何利用Flink进行高效的流处理和数据处理,特别适合希望在分布式系统中构建高性能数据处理应用的开发者...
本资源“Java项目经验汇总”旨在为新手提供一个快速了解和学习Java项目实践的平台,帮助他们在简历上增添有分量的项目经验。 1. **基础Web项目** - **Hello World**:入门级别的项目,通过构建一个简单的动态网页...