糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > windows下使用mahout|Taste实现协同过滤算法

windows下使用mahout|Taste实现协同过滤算法

时间:2021-01-25 08:32:46

相关推荐

windows下使用mahout|Taste实现协同过滤算法

如果要实现Taste算法,必备的条件是:

1) JDK,使用1.6版本。需要说明一下,因为要基于Eclipse构建,所以在设置path的值之前要先定义JAVA_HOME变量。

2) Maven,使用2.0.11版本或以上。在eclipse上安装maven插件—m2eclipse。

3)Apache Mahout,使用0.5版本。

Apache Mahout -Taste Documentation中的安装步骤:

[javascript]view plaincopy 4.Demo Tobuildandrunthedemo,followtheinstructionsbelow,whicharewrittenforUnix-like operatingsystems: 1.ObtainacopyoftheMahoutdistribution,eitherfromSVNorasadownloadedarchive. 2.Downloadthe"1MillionMovieLensDataset"from/. 3.Unpackthearchiveandcopymovies.datandratings.datto trunk/taste-web/src/main/resources/org/apache/mahout/cf/taste/example/ undertheMahoutdistributiondirectory. 4.NavigatetothedirectorywhereyouunpackedtheMahoutdistribution,andnavigate totrunk. 5.Runmvninstall,whichbuildsandinstallsMahoutcoretoyourlocalrepository 6.cdtaste-web 7.cp../examples/target/grouplens.jar./lib 8.Editrecommender.propertiesandfillintherecommender.class: recommender.class=org.apache.mahout.cf.taste.example.grouplens.GroupLe 9.mvnpackage 10.mvnjetty:run-war.YoumayneedtogiveMavenmorememory:inabashshell, exportMAVEN_OPTS=-Xmx1024M 11.Getrecommendationsbyaccessingthewebapplicationinyourbrowser: http://localhost:8080/RecommenderServlet?userID=1 Thiswillproduceasimplepreference-itemIDlistwhichcouldbeconsumedbyaclient application.Getmoreusefulhuman-readableoutputwiththedebugparameter: http://localhost:8080/RecommenderServlet?userID=1&debug=true Incidentally,Taste'swebserviceinterfacemaythenbefoundat: http://localhost:8080/RecommenderService.jws ItsWSDLfilewillbehere... http://localhost:8080/RecommenderService.jws?wsdl ...andyoucanevenaccessitinyourbrowserviaasimpleHTTPrequest: .../RecommenderService.jws?method=recommend&userID=1&howMany=10

一、在window上安装maven

现在Java新架构的不断出现,例如Struts,Spring,Hibernate等,项目的配置文件的增多,给开发人员带来很大麻烦。在实际的开发当中,Myeclipse中的project越来越庞大,所依赖的第三方Jar包越来越多,这显得Project很臃肿,给项目管理带来了很大不便,尤其是在一些大型项目。为了解决上述问题,Apache开源组织发布了Maven,它适用于大的Java项目。

有关maven介绍见《Maven权威指南》 ,下载地址:/mvn-def-guide/

安装步骤:

1、下载包,见/download.html

2、解压缩,将其中的bin目录设置到windows Path环境变量中,maven也是依赖jdk的,先装好jdk,在环境变量里面配置好jdk。

2.1、设置JAVA_HOME(顾名其意该变量的含义就是java的安装路径),找到path,然后点编辑,path变量的含义就是系统在任何路径下都可以识别java命令,则变量值为“.;%JAVA_HOME%\bin”,

2.2、新建变量名:M2_HOME,变量值:E:\maven\apache-maven-2.2.1,注意这里不含bin的路径。2、在path后追加;%M2_HOME%\bin,注意这里到bin目录

3、测试安装是否成功:开始->运行->cmd->mvn -version

注意:当提示mvn提示不是内部命令或外部命令,是因为在设置环境变量path的时候,可能覆盖了原先设置着的变量,只要在path后面添加变量:%SystemRoot%\system32;

4、在eclipse中安装maven插件 /blog/1217812、/freeliver54/archive//09/07/2169527.html

5、使用links管理eclipse插件 /cfyme/article/details/6099056/

二、在windows上构建Apache Mahout环境

Apache Mahout 是 Apache Software Foundation (ASF) 开发的一个全新的开源项目,其主要目标是创建一些可伸缩的机器学习算法,供开发人员在 Apache 在许可下免费使用。该项目已经发展到了它的最二个年头,目前只有一个公共发行版。Mahout 包含许多实现,包括集群、分类、CP 和进化程序。

详细内容见:

1、Apache Mahout 简介/developerworks/cn/java/j-mahout/

2、Maven 2.0:编译、测试、部署、运行/html/doc//06/14/00847.html

开始构建:

1、基于 Apache Mahout 构建社会化推荐引擎/developerworks/cn/java/j-lo-mahout/

本文是由此篇文章引申而来,所以具体就是实现了“Taste的安装于简单的Demo实现”。

2、使用mvn搭建Mahout环境http://anqiang1900./blog/static/114188864380255296/

简单来说就是将Mahout源码从官网上下载下来后,在dos下切换到根文件夹后执行mvn install。

3、在Eclipse中构建Mahout /dlts26/archive//09/13/2174889.html

就是将Mahout源码导入Eclipse从而形成Maven工程。再在mahout文件夹下执行maven install(如果上一步没做这个的话)。

三、运行Apache Mahout中的Taste Webapp例子

Taste 是 Apache Mahout 提供的一个协同过滤算法的高效实现,它是一个基于 Java 实现的可扩展的,高效的推荐引擎。

1.修改mahout-taste-webapp工程的pom.xml,添加对mahout-examples的依赖

<dependency>

<groupId>${project.groupId}</groupId>

<artifactId>mahout-examples</artifactId>

<version>0.5</version>

</dependency>

2.在mahout-taste-webapp工程的recommender.properties中添加

recommender.class=org.apache.mahout.cf.taste.example.grouplens.GroupLensRecommender

3.从/node/73上下载数据文件,我下载的是1M Ratings Data Set (.tar.gz)经过测试验证通过,其他数据文件请自行验证。解压以后将ratings.dat复制到mahout-taste-webapp工程的/org/apache/mahout/cf/taste/example/grouplens/下,至于为什么是这个路径?请大家去看这个类GroupLensDataModel。

4.现在准备工作基本完成了,cd到taste-web我们来运行一把

mvn jetty:run-war

5.访问一下http://localhost:8080/RecommenderServlet?userID=1就能看到效果,这个servlet还支持其他参数请参看RecommenderServlet的javadoc说明

详细内容见/blog/1124682

四、遇到的问题

1、在Eclipse中配置Maven时遇到的问题

启动eclipse的时候会提示warning:找不到jdk啥的,解决办法:

在eclipse.ini文件中加入如下两行(vm指向javaw.exe的位置,或者直接到bin那里也可以):

-vm

D:\Development\Java\jdk1.5.0_16\bin\javaw.exe(注意这两行加到-startup与-launcher.library之间)

2、在windows上构建mahout环境时出现的问题:

2.1 在mahout目录下,运行"mvn install"时,遇到以下错误

Cannot run program "chmod": CreateProcess error=2

chmod是linux命令,此错误是由于Cygwin + Hadoop 跑在 Windows 上出现的。

也就是说如果当前在windows下进行mahout编译,一定要确保正确安装了Cygwin(按照下面的教程装上Cygwin便可,后面hadoop的配置可以不用全部完成!)

这里用几个比较好的教材,讲解如何在windows下安装Hadoop Cluster(

http://ebiquity.umbc.edu/Tutorials/Hadoop/00%20-%20Intro.html

//06/14/running-hadoop-on-windows/)

下载hadoop-0.19.1在 /dist/hadoop/core/hadoop-0.19.1/

2.2在Cygwin中运行命令ssh localhost连接不成功时出现Connection closed by ::1错误

Cygwin,耗时近xxxx个小时,查遍中文外文文献,终于将此题目解决。问题描述:在Win7下Cygwin中,使用sshlocalhost命令, 出现Connectionclosedby127.0.0.1的问题。解决方案:1、开端——运行——services.msc2、右键 CYGWINsshd——属性——登录选项卡——选择“此账户”——浏览——高级——立即查找——选择你的账户名(必须为治理员权限)——输进密码(必须 要有,空密码不承受,且和电脑登录密码相同)——确定。3、重启CYGWINsshd效劳即可。这样就以你的账户的名义启动了这个效劳。而后sshlocalhost成功。这样 做的一个缺点可能是你要给电脑设个密码

详见:/s/blog_4abbf0ae0100r8hh.html

3、运行Taste Webapp时遇到的问题

在Eclipse中配置好mahout后,就可以在mahout中运行taste-webapp算法了。

文中1,2步骤由于前面已经配置好,就直接从第3步开始配置mahout-taste-webapp中的内容。

出现的问题:

在浏览器栏输入http://localhost:8080/RecommenderServlet?userID=1后出现错误:

HTTP ERROR: 404

Problem accessing /RecommenderServlet. Reason:

Not Found

Powered by Jetty://

仔细查看第7步mvnjetty:run-war时,发现其中出现错误:

WARN::FAILED taste-recommender: java.lang.OutOfMemoryError: Java heap space

表明出现maven工程内存溢出。

解决办法:

Windows环境中

在Maven安装目录中找到文件%M2_HOME%\bin\mvn.bat ,这就是启动Maven的脚本文件,在该文件中你能看到有一行注释为:

@REM set MAVEN_OPTS=-Xdebug -Xnoagent -piler=NONE...

它的意思是你可以设置一些Maven参数,我们就在注释下面加入一行:

set MAVEN_OPTS=-Xmx1024M

或者,在执行mvnjetty:run-war命令之前,执行

F:\mahout-distribution-0.5\taste-web>set MAVEN_OPTS=-Xmx1024M

我们看到,配置的Maven选项生效了,OutOfMemoryError也能得以相应的解决。

如果觉得《windows下使用mahout|Taste实现协同过滤算法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。