Mahout协同推荐简单实例
上篇文章介绍了协同过滤的安装与配置,这篇找了几个协同过滤的简单例子,看一下
Mahout给我们提供的强大的协同过滤算法。需要新建一个基于Maven的工程,下面是
pom.xml需要导入的包。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>mahouttest</groupId><artifactId>mahouttest</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>mahouttest</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.8.1</version><scope>test</scope></dependency><dependency><groupId>org.apache.mahout</groupId><artifactId>mahout-core</artifactId><version>0.8-SNAPSHOT</version><type>jar</type><scope>compile</scope></dependency></dependencies>
这里我们导入的是最新的Mahout包,需要在本地的maven库中安装好。
首先我们需要准备好测试的数据,我们就用《Mahout in action》中的例子:
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
具体对应的关系图如下:
下面我们用Mahout中三种不同的推荐代码来执行以下刚才给出的数据,看看Mahout中的推荐接口是
如何使用的。
1. 基于用户的协同推荐的代码:
DataModel model =new FileDataModel(new File("data/intro.csv"));
UserSimilarity similarity =new PearsonCorrelationSimilarity(model);
UserNeighborhood neighborhood =new NearestNUserNeighborhood(2,similarity,model);
Recommender recommender= new GenericUserBasedRecommender(model,neighborhood,similarity);
List<RecommendedItem> recommendations =recommender.recommend(1, 1);
for(RecommendedItem recommendation :recommendations){System.out.println(recommendation);
}
执行后的结果是:RecommendedItem[item:104, value:4.257081]
2. 基于Item的协同过滤的代码:
DataModel model =new FileDataModel(new File("data/intro.csv"));
ItemSimilarity similarity =new PearsonCorrelationSimilarity(model);
Recommender recommender= new GenericItemBasedRecommender(model,similarity);
List<RecommendedItem> recommendations =recommender.recommend(1, 1);
for(RecommendedItem recommendation :recommendations){System.out.println(recommendation);
}
执行后的结果是:RecommendedItem[item:104, value:5.0]
3. SlopeOne推荐算法
DataModel model =new FileDataModel(new File("data/intro.csv"));
Recommender recommender= new SlopeOneRecommender(model);
List<RecommendedItem> recommendations =recommender.recommend(1, 1);
for(RecommendedItem recommendation :recommendations){System.out.println(recommendation);
}
执行结果是:RecommendedItem[item:105, value:5.75]
转载于:https://www.cnblogs.com/cstar/archive/2012/12/17/2821316.html
Mahout协同推荐简单实例相关推荐
- python协同过滤调用包_简单的python协同过滤程序实例代码
本文研究的主要是python协同过滤程序的相关内容,具体介绍如下. 关于协同过滤的一个最经典的例子就是看电影,有时候不知道哪一部电影是我们喜欢的或者评分比较高的,那么通常的做法就是问问周围的朋友,看看 ...
- 02 机器学习算法库Mahout - 协同过滤算法实现推荐功能
(原文地址:http://blog.csdn.net/codemosi/article/category/2777041,转载麻烦带上原文地址.hadoop hive hbase mahout ...
- mahout+Eclipse,使用 Taste 构建推荐引擎实例 – 电影推荐引擎
使用 Taste 构建推荐引擎实例 – 电影推荐引擎 根据上面的步骤,我们可以得到一个简单的推荐引擎 demo 环境,下面介绍如何使用 Taste 方便地构建自定义的推荐引擎. 抽取 Taste 工具 ...
- php简单实例,php实现推荐功能的简单实例
php实现推荐功能的简单实例,魔法,标题,文章,简明扼要,数组 php实现推荐功能的简单实例 易采站长站,站长之家为您整理了php实现推荐功能的简单实例的相关内容. 利用similar_text将这些 ...
- 主要推荐系统算法总结及Youtube深度学习推荐算法实例概括
主要推荐系统算法总结及Youtube深度学习推荐算法实例概括 By ZhuZhiboSmith2017年7月09日 17:00 现如今,许多公司使用大数据来做超级相关推荐,并以此来增加收益.在海量推荐 ...
- 推荐系统 Mahout入门之简单使用
Mahout: Apache Mahout 是 Apache Software Foundation(ASF)旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快 ...
- 经典算法题每日演练——第六题 协同推荐SlopeOne 算法
原文:经典算法题每日演练--第六题 协同推荐SlopeOne 算法 相信大家对如下的Category都很熟悉,很多网站都有类似如下的功能,"商品推荐","猜你喜欢&quo ...
- Mahout分布式推荐引擎介绍
一直以为在Mahout的在分布式上做了很多东西,很高深.最近一段时间由于工作中要实现一些分布式算法,所以硬着头皮看了一下它的源码.当时我匆忙的看过KMeans的实现,这次我的工作是在搜索引擎日志记录中 ...
- ajax webservice 参数类型,JQuery Ajax WebService传递参数的简单实例
Asp.NET中利用jQuery实现Ajax时,在服务器端可以使用aspx,ashx,以及WebService等方式.最近研究了一下WebService方式,jQuery Ajax 方法调用 jQue ...
最新文章
- WPF学习笔记——设置ListBox选中项的背景颜色
- mysql中文查询问题
- MKL25Z128 Cortex-M0微处理器架构定义的存储器映射
- Android开发人员资料大全(开发人员必看)
- mysql grant教程_MySQL如何使用授权命令grant
- 用 ABAP 读取本地文本文件内容
- 货车运输(洛谷P1967)(倍增)
- jquery-基础事件[下]
- 模型训练太慢?显存不够用?这个算法让你的GPU老树开新花
- php js特效代码如何用,phpstorm编写代码增加代码爆炸效果
- Eclipse统计代码行数
- 大数据分析平台建模及建议
- 用python调用r包
- 微信公众号模板消息推送,中文乱码
- APP支付如何对接合适的支付通道?
- 怎么查EI论文的检索号
- 化工原理 --- 流体流体 --- 习题课及复习
- 某一点绕另一点逆时针旋转90后的坐标
- 软考高级系统架构设计师系列论文七:论基于构件的软件开发
- 暑假集训总结——区间DP,堆的概念及应用,STL(vector、set、pair、map、priority_queue),hash表,树状数组,图论
热门文章
- html中js定义数组,javascript数组的定义及操作实例
- java 苹果vcf解析_VCF文件格式解析
- iOS中几种数据持久化方案总结
- PHP中htmlentities跟htmlspecialchars的区别
- php读取cookie文件,PHP读取CURL模拟登录时生成Cookie文件的方法,_PHP教程
- 打开共享文件闪退怎么解决_文件共享解决方案-随时随地共享同步访问文件
- 将毫秒转换_Matlab将Unix时间戳转为可读日期
- matlab与python 语言区别总结(1)_matlab与python 语言区别总结(1)
- mysql没有err文件_xampp中的mysql启动时无法产生err文件
- php 防止倒链,PHP防止图片倒链