Eclipse下mahout实现推荐的简单实例

Mahout 搭建开发环境 + 实现项目示例 等等在定 我此时是一个完全没用过Mahout的门外汉,对Hadoop也没有实际使用经验,算是真正的零基础。我的目标是希望以最简单的方式搭建起一个Mahout的开发环境,以最快的速度让Mahout工作起来,以方便后续的进一步学习。 于是,经过一番折腾,便有了本文。本文记录了 Linux 下Eclipse+Maven+Mahout单机环境的搭建过程。我不知道这是不是最简单Mahout开发环境,但 阅读详情

数据准备:test.txt

第一列为UserID ,第二列为ItemID,第三列为Preference Value 即评分

  1. 1,101,5  
  2. 1,102,3  
  3. 1,103,2.5  
  4. 2,101,2  
  5. 2,102,2.5  
  6. 2,103,5  
  7. 2,104,2  
  8. 3,101,2.5  
  9. 3,104,4  
  10. 3,105,4.5  
  11. 3,107,5  
  12. 4,101,5  
  13. 4,103,3  
  14. 4,104,4.5  
  15. 4,106,4  
  16. 5,101,4  
  17. 5,102,3  
  18. 5,103,2  
  19. 5,104,4  
  20. 5,105,3.5  
  21. 5,106,4  
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

eclipse中新建一个java工程,然后在src目录下新建一个类RecommenderIntro (这里只是做测试,就放在默认包下,不新建包了),代码如下:

  1. import org.apache.mahout.cf.taste.impl.model.file.*;  
  2. import org.apache.mahout.cf.taste.impl.neighborhood.*;  
  3. import org.apache.mahout.cf.taste.impl.recommender.*;  
  4. import org.apache.mahout.cf.taste.impl.similarity.*;  
  5. import org.apache.mahout.cf.taste.model.*;  
  6. import org.apache.mahout.cf.taste.neighborhood.*;  
  7. import org.apache.mahout.cf.taste.recommender.*;  
  8. import org.apache.mahout.cf.taste.similarity.*;  
  9. import java.io.*;  
  10. import java.util.*;  
  11. public class RecommenderIntro {  
  12.     private RecommenderIntro(){};  
  13.       
  14.     public static void main (String args[])throws Exception{  
  15.                 // step:1 构建模型 2 计算相似度 3 查找k紧邻 4 构造推荐引擎   
  16.         DataModel  model =new FileDataModel(new File("/home/test/test-in/test.txt"));//文件名一定要是绝对路径   
  17.         UserSimilarity similarity =new PearsonCorrelationSimilarity(model);  
  18.         UserNeighborhood neighborhood =new NearestNUserNeighborhood(2,similarity,model);  
  19.         Recommender recommender= new GenericUserBasedRecommender(model,neighborhood,similarity);  
  20.         List<RecommendedItem> recommendations =recommender.recommend(12);//为用户1推荐两个ItemID   
  21.         for(RecommendedItem recommendation :recommendations){  
  22.             System.out.println(recommendation);  
  23.         }  
  24.           
  25.     }  
  26. }  
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.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.*;
import java.io.*;
import java.util.*;
public class RecommenderIntro {
	private RecommenderIntro(){};
	
	public static void main (String args[])throws Exception{
                // step:1 构建模型 2 计算相似度 3 查找k紧邻 4 构造推荐引擎
		DataModel  model =new FileDataModel(new File("/home/test/test-in/test.txt"));//文件名一定要是绝对路径
		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, 2);//为用户1推荐两个ItemID
		for(RecommendedItem recommendation :recommendations){
			System.out.println(recommendation);
		}
		
	}
}

此时肯定会报错,因为还没有导入任何相关Jar包,将mahout-core-0.4.jar导到工程中,此时代码不会显示有错了

然后Run As 选择Java Application,单机运行(当然集群如果成功启动的话,也可以在集群上运行的)。此时在运行后,会相继报一些包不存在,根据提示,依次将包导到工程中。我在测试的过程中,先后导入了slf4j-api-1.6.0.jar,slf4j-jcl-1.6.0.jar,google-collection-1.0-rc2.jar,commons-logging-1.1.1.jar,mahout-math-0.4.jar,uncommons-maths-1.2.jar,这些包都可以在mahout安装目录下的lib目录下找到。经过一步步差包导包(控制台报什么包不存在,我就找到相应包导入)调试后,最后运行成功,结果如下:

RecommendedItem[item:104, value:4.257081]

RecommendedItem[item:106, value:4.0]

结果分析:找到用户1的相似用户2和用户5,用户2和用户5共同有104,所以推荐分数高,但我不知道这个分数是怎么算出来的?用户2中没有其它可以推荐,然后用户5中还有105和106可以推荐,而106的评分比105高,所以第二个结果是106,不知道理解的对不对?只是自己猜测的,有知道其中内幕的和知道推荐分数怎么算的,请留言分享一下,开源是促进相互学习的好方法,呵呵

然后看了一下mahout的taste工作原理,我将mahout安装目录下的mahout-taste-webapp-0.4.war放在tomcat安装目录下的webapps中,然后启动tomcat,然后在浏览器中输入:http://localhost:8080/mahout-taste-webapp-0.4/RecommenderService.jws ,可以看到Taste 提供的Web 服务访问接口(即WebServices服务),但却不能根据用户ID查询,估计应该还要下载相应的数据集和jar包,详见 基于 Apache Mahout 构建社会化推荐引擎

参考资料:

1.http://www.ibm.com/developerworks/cn/java/j-mahout/

2.http://blog.csdn.net/zhzhl202/article/details/6316570

3.http://www.ibm.com/developerworks/cn/java/j-lo-mahout/

 

开源代码分享(29)-基于拉丁超立方抽样的风光场景生成和削减 作为分层抽样方法的一 种,拉丁超立方抽样具有良好的抽样精度和效率[14]。本文使用多场景方法来描述可再生能源(风电、光伏)的不确定性。以风电功率为例,首先假定风电功率服从正态分布 N(μ, δ 2 ),μ 为预测值的期望值,δ 为其波动的百分比。接着,采用拉丁超立方抽样[21]生成大量服从概率分布约束的风电出力场景,并采用考虑 Kantorovich 距离[22]的场景削减技术处理该场景,进行场景削减。最后,导出具有相应概率的削减之后的场景。 阅读详情

相关推荐

【腾讯小龙虾WorkBuddy专栏05】深度解析WorkBuddy连接器(Connector)

深度解析WorkBuddy连接器(Connector)

AI人人懂 1128

mahout 实例

基于java讲解了mahout的主要的三种算法,聚类,分类,相似度,非常适合初学者的学习

Apache Mahout核心库与依赖包配置指南

Apache Mahout 是一个旨在加速机器学习算法的可扩展机器学习平台。随着大数据时代的到来,Mahout 的重要性日益凸显,它提供了一套丰富的实现,涵盖了传统的机器学习算法,尤其是用于大规模数据集的算法。从早期版本专注于聚类和分类,到后来的集成Hadoop以处理大数据,Mahout 一直是开发者和数据科学家探索和实现机器学习解决方案的首选工具之一。在接下来的章节中,我们将深入了解Mahout支持的核心机器学习领域,以及如何将其与Hadoop集成,从而应对各种数据分析挑战。

weixin_32445049的博客 1247

java使用mahout实现协同过滤

FileDataModel的使用可能跟mahout的版本有关,具体的可以查看相关文档。

qq_47180202的博客 960

mahout推荐算法——协同过滤推荐算法(java代码实现

什么是协同过滤 协同过滤是利用集体智慧的一个典型方法。要理解什么是协同过滤 (Collaborative Filtering, 简称 CF),首先想一个简单的问题,如果你现在想看个电影,但你不知道具体看哪部,你会怎么做?大部分的人会问问周围的朋友,看看最近有什么好看的电影推荐,而我们一般更倾向于从口味比较类似的朋友那里得到推荐。这就是协同过滤的核心思想。 协同过滤一般是在海量的用户中发掘出一小

huanhuanxiaoxiao的博客 1万+

使用Apache Mahout制作 推荐引擎

推荐引擎可能是当今初创公司应用最多的一种数据科学方法。有两项主要技术用来创建一个 推系统:基于内容的过滤与协同过滤。基于内容的过滤算法使用项目属性寻找带有相似属性的 项目协同过滤算法关注的是用户的评分或者其他用户的行为,它基于拥有类似行为的用户喜好 与购买物品进行推荐。 本章先讲解基本概念,它们是理解推荐引擎原理必需的内容;然后演示如何使用Apache Mahout中的各种算法实现快速创建一个可扩展的推荐引擎。

weixin_55987175的博客 1490

win环境下eclipse+maven+mahout的安装和简单基于用户协同推荐demo

开发环境 win10 64位 eclipse-java-2019-06-R-win32-x86_64 apache-maven-3.6.1 mahout-0.6 jdk-12.0.1 一,环境配置 JDK下载链接 下载成功后,如果选择exe文件直接安装,然后添加环境变量: 添加系统变量中变量名:JAVA_HOME 和变量值:此处是自己安装jdk的路径 添加路径: 编辑Path路径,添加jd...

qq_43106863的博客 3125

Eclipsemahout实现推荐简单实例

tw.streetvoice.com/xdpdnxbl993/songs/album/75761314/ tw.streetvoice.com/xdpdnxbl993/songs/album/75761314/?gmkwg

dxbbk60204的专栏 394

eclipse、maven搭建mahout简单基于用户协同推荐demo

    本文记录了在mac使用maven和eclipse搭建mahout小demo的过程。 一、eclipse安装 二、maven安装 请允许我跳过这两步,因为我开始开发的过程中,eclipse和maven都已经是现成安装好的。 三、用maven构建mahout项目 1. 新建项目 打开eclipse,通过菜单File &gt; New &gt; Project新建项目,选择Mav...

猫球球的博客 1428

Mahout推荐算法API详解

Mahout推荐算法API详解 图书推荐

Make progress step by step everyday..... 666

mahout系列(一)--eclipse利用创建mahout程序

摸索了几天终于有点思路了!!!!

yxb3158的专栏 1262

mahout1.0 入门笔记0

eclipse上用maven构建mahout1.0项目

积微致著 527

maven、mahout

mahout 安装 测试 http://wenku.baidu.com/link?url=WqhTQurEnt6aOyjVHJkqHTHLrwPHUor9KWEIO434PxT0607MWip-AU371xCP3mM8O2riYtUgB9KpIaXDKQIDKaDw68YVN0g0wd1bKlBs_oG     PS:  下载tar.gz的安装包地址:http://www.apache

liyue521的专栏 510

基于 Apache Mahout 构建社会化推荐引擎

参考文章 IBM«基于 Apache Mahout 构建社会化推荐引擎», 文章的链接: http://www.ibm.com/developerworks/cn/java/j-lo-mahout/ 安装条件: 1) JDK,使用1.6版本。 MyEclipse /Eclipse 2) Maven,使用2.0.11版本或以上。 3) Apache Mahout,使用0.5版本。

每天积累一点,一年后你会发现,自己变化很大 849

Eclipsemahout的配置与使用

mahout 是一个开源的旨在为实际问题提供可伸缩性算法的软件。官方主页:http://mahout.apache.org/QuickStart:https://cwiki.apache.org/confluence/display/MAHOUT/Quickstart目前的版本是0.4 ,此例展示了在eclipse下如何配置并应用mahout到你的程序中。环境:eclipse +maven(m2eclipse)+ mahout 0.4 +jdk 1.6配置:Step 1:        在eclipse中新

张知临的专栏 1万+

Eclipsemahout运行环境的搭建以及推荐实例

首先,搭建eclipse mahout开发环境 1.安装eclipse集成开发环境j2ee版本:eclipse-jee-juno-SR2-linux-gtk.tar.gz 下载地址为:http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/juno/SR2/eclipse-jee-

小飞侠的博客 3080

eclipse+maven+mahout :环境搭建+推荐

本文记录了Windows下 Eclipse+Maven+Mahout 单机环境的搭建过程。我不知道这是不是最简单Mahout开发环境,但它应该算得上是比较简单的。 二、安装Eclipse 这个没啥说的,再怎么零基础,也要会用Eclipse吧。 Eclipse的下载地址为: http://www.eclipse.org/downloads/ ,选择标准版就行。 安装完后运行Eclip

arrow8071的专栏 1995

STM32F103 驱动SI4438.rar_SI4438_STM32F103_si4438驱动

无线模块SI4438使用STM32,使用轮询方式进行,程序可用

上一篇: win7下使用Taste实现协同过滤算法
下一篇: Mahout的taste推荐系统里的几种Recommender分析
beck_zhou
博客等级 码龄19年 2151粉丝 510原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值