`
wbj0110
  • 浏览: 1603560 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

mahout 推荐系统示例(转)

阅读更多

建立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]

分享到:
评论

相关推荐

    如何成功运行Apache Mahout的Taste Webapp-Mahout推荐教程-Maven3.0.5-JDK1.6-Mahout0.5

    在Mahout Taste Webapp工程中,需要添加对mahout-examples的依赖,这一步骤是必须的,因为示例代码提供了实际运行推荐系统所必需的组件。 6. 配置推荐引擎的属性 在Mahout Taste Webapp的recommender.properties...

    mahout的基于用户的推荐Demo

    **Mahout用户基础推荐系统详解** Apache Mahout是一款开源机器学习库,专为大数据处理而设计,尤其在推荐系统、分类和聚类方面有广泛的应用。在这个“mahout的基于用户的推荐Demo”中,我们将深入探讨如何利用...

    基于Mahout实现协同过滤推荐算法的电影推荐系统

    ## 基于 Mahout 的电影推荐系统实现 ### 资源简介 **基于 Mahout 实现协同过滤推荐算法的电影推荐系统** 是一套完整的学习和开发资源,旨在帮助用户使用 Apache Mahout 构建一个功能完善的电影推荐系统。Mahout 是...

    Mahout in Action 2012

    Apache Mahout是一个Apache开源数据挖掘和机器学习项目,它提供了一系列基于Java的工具和库,用于构建可扩展的推荐系统、聚类算法以及其他机器学习应用。Mahout的目标是简化数据挖掘任务的实现,使其不仅仅局限于...

    mahout-core-0.9.jar+mahout-core-0.8.jar+mahout-core-0.1.jar

    Mahout提供了多种机器学习算法,包括推荐系统、聚类和分类。推荐系统如协同过滤,用于个性化推荐;聚类算法如K-means,用于将数据分成多个相似的组;分类算法如随机森林,用于预测目标变量。 2. **Hadoop支持**: ...

    Mahout推荐算法API.pdf

    在 Mahout 中,推荐算法是其核心功能之一,用于构建个性化的推荐系统。本篇文章将详细探讨 Mahout 的推荐算法 API,特别是 `Recommender` 接口及其相关的实现。 1. **Recommender 接口**: `Recommender` 是 ...

    Mahout In Action英文完整版

    本章将介绍推荐系统的原理、不同类型的推荐算法以及如何利用Mahout实现推荐功能。通过本章的学习,读者可以掌握如何为用户生成个性化的推荐列表。 - **第3章:Representing recommender data** - 在这一章节中,...

    Mahout最新基础依赖包.rar

    - **推荐系统**:Mahout 可用于构建基于用户行为的个性化推荐系统,如电影推荐。通过分析用户的历史行为,计算相似性并预测用户可能感兴趣的内容。 - **分类**:使用 Mahout 进行文本分类,例如新闻分类或垃圾邮件...

    Mahout算法解析与案例实战&Mahout;实战

    推荐系统是Mahout的核心应用之一,它通过分析用户的历史行为和偏好,为用户提供个性化的产品或服务推荐。在《Mahout算法解析与案例实战》中,你将了解到基于协同过滤、基于内容的推荐以及混合推荐等方法。协同过滤...

    mahout-0.3.tar

    Apache Mahout是一个基于Java的开源机器学习库,它为大数据处理提供了丰富的算法和工具,用于实现推荐系统、分类和聚类。"mahout-0.3.tar"是Mahout项目在0.3版本的源码或二进制发行版的压缩文件,通常包含了项目的源...

    mahout-distribution-0.7-src.zip

    1. 推荐系统(Recommender System):Mahout提供了基于用户、物品的协同过滤算法,如UserBasedRecommender和ItemBasedRecommender,以及矩阵分解(SVD)等技术,用于预测用户可能感兴趣的物品。 2. 聚类...

    Mahout源码

    Apache Mahout是一个基于Java的开源机器学习库,它提供了丰富的算法和工具,用于构建智能应用程序,特别是推荐系统、分类和聚类。这个压缩包文件"Mahout"很可能包含了Mahout项目的源代码,允许开发者深入理解其内部...

    mahout in action中的源码

    Mahout包含了多种机器学习算法,如分类、聚类、推荐系统等,适用于各种业务场景。 1. **分类(Classification)**:Mahout提供了如朴素贝叶斯(Naive Bayes)、决策树(Decision Trees)和随机森林(Random Forests...

    Apache Mahout Cookbook

    本书不仅涵盖了安装与配置Mahout所需的环境,还提供了丰富的示例代码,展示了如何利用Mahout进行推荐系统、分类、聚类等数据挖掘任务。 ### Mahout并非难事 章节开篇便引入了安装Java和Hadoop的基本步骤,强调了这...

    mahout1.0编译包

    Mahout是一个流行的数据挖掘工具,它提供了各种算法来实现推荐系统、分类和聚类。这里的“1.0”可能指的是在Mahout 0.9基础上的重大更新,解决了与Hadoop 2不兼容的问题。 **描述详解:** 描述中提到,“mahout0.9...

    Mahout RandomForest Example使用步骤

    Apache Mahout 是一个基于 Apache Hadoop 的机器学习库,提供了多种算法,包括分类、聚类和推荐系统等。在这些算法中,随机森林(Random Forest)是一种广泛使用的集成学习方法,适用于分类和回归任务。本篇文章将...

Global site tag (gtag.js) - Google Analytics