Mahout实践指南(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-01 15:54:29

点击下载

作者:(美)贾科梅利(Giacomelli,P.)

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Mahout实践指南

Mahout实践指南试读:

前言

在最近的10年,社会化网络的出现和移动设备的发明极大地改变了我们处理数据的方式。

为了帮助你了解究竟发生了什么,我们不得不提到在2012通过Qmee做的一项研究:在60秒里展示互联网上经常发生的事情。结果参考http://blog.qmee.com/qmee-online-in-60-seconds/,它告诉我们在过去的每一秒里Twitter收到278000条推文(tweet),Facebook收到41000条post,YouTube已上传了时长达72小时的视频。这些算是很大的网站了,但是即使是具有国家或国际背景的网站,因收集网站的日志而拥有上百万的记录也是很平常的。

为管理如此海量的信息,需要编写新框架来实现不同机器之间的计算任务共享。Hadoop是Apache编写的算法解决方案,它可以将计算任务分配到不同的硬件架构上运行。

当你需要分析上亿条数据记录时,在大多数情况下,你的目的是通过信息提取来发现数据之间的新关系。传统上,数据挖掘算法就是为这个目的发展起来的。然而,当处理非常大的数据集时,无法在一个合理的时间里实现数据挖掘任务。Mahout是一个数据挖掘框架,可以和Hadoop一起应用数据挖掘算法处理大规模数据集上的数据挖掘任务,它使用了封装在Hadoop里面的MapReduce例程。所以,Mahout通过Hadoop架构的这个底层接口为编程人员进行数据挖掘任务提供了一个易用的框架。

本书将通过一些实例向你展示怎么使用Mahout进行数据挖掘,以及数据挖掘的不同方法。最关键的是,使用一种简洁通俗的方法向你展示使用Mahout对数据进行分类、聚类和预测的方式。本书是面向编程的,所以我们并不想在步骤中过多地引入其理论背景,但是我们会给有能力的读者一些参考文献以进行更深一步研究。当写这本书时,我们面临的主要挑战是:

·根据我的经验,Mahout有着非常高的学习曲线,主要原因是算法使用了MapReduce方法,该方法不同于序列方法。

·数据挖掘算法本身就不太容易理解,它们在某些情况下需要一些特殊的技能,而开发人员不一定具备这样的技能。

于是我们尽力使用一种面向源码的方式让读者能抓住每一段代码的含义和目的,但是又不需要深入理解其背后的实现机制。

这种方法的效果由你来判断,而且我们希望你在阅读的时候能够发现一些乐趣,就像我们在写作的时候获得的一样。本书的组织

第1章描述如何在单台机器上创建一个完整的开发环境。通过编写一个推荐算法使得数据挖掘操作的所有代码片段均以Hadoop的方式呈现(包括引入的JAR库等),这非常清晰地展现在没有任何背景的读者面前。

第2章介绍序列文件。当使用Hadoop和Mahout时,序列文件是个比较关键的概念。在多数情况下,Mahout并不直接操作要使用的数据集,所以在没有编码算法之前,我们需要描述如何对待这些特别的文件。

第3章详细介绍使用命令行工具和代码从RDBMS中读写数据。

第4章详细介绍如何使用朴素贝叶斯分类器分类文本文档。全面地描述如何将文档单词转化为包括单词出现次数的向量,并展示如何使用Java编写朴素贝叶斯分类器和互补朴素贝叶斯分类器。

第5章主要涉及两个算法:logistic回归和随机森林(Random Forests)。它们展示了通过分析某些普通数据就可能预测其未来值。

第6章描述Mahout框架中最常用的算法,其中包括大数据的聚类分析和分类任务。在这一章,通过一些实例介绍使用顶棚聚类围绕聚类中心聚合数据向量。

第7章继续介绍Mahout中的聚类分析算法。该章描述了频谱聚类的使用方式,它在对图形式的链接信息进行分类时是非常有效的。

第8章描述了使用K-均值聚类(包括序列方式和MapReduce方式)对主题中的文本文档进行分类。我们将通过命令行方式和Java编码的方式解释如何使用该算法。

第9章介绍一个比较老的,称为频繁模式挖掘(Frequent Pattern Mining)的算法。该算法通过过去顾客的购买情况来预测哪些东西应该放在一块出售。Latent Dirichlet算法将用于文本分类。

第10章描述了如何在Mahout中使用遗传算法解决旅行商(Travelling Salesman)问题和提取规则。我们将会看到如何使用Mahout的不同版本来使用这些算法。阅读本书你需要什么

在第1章中,我们将介绍本书需要的所有软件。本书中所有的例子均在Ubuntu 10.04简易发行版和Oracle公司的Virtual Box平台上编程实现。本书的读者

本书对希望以一种新颖、快速的方式来入门Mahout的开发人员是比较理想的。阅读本书不需要了解Mahout,有经验的开发人员或系统管理人员也可以从本书中受益。下载示例代码

你可以通过你的账号(在网站http://www.packtpub.com)下载在Packt上购买的书籍的所有示例代码。如果你在别的地方购买本书,可以访问http://www.packtpub.com/support并注册,我们将会通过电子邮件直接把文件发送给你。勘误表

尽管我们尽了最大的努力来确保内容的准确性,但错误在所难免。如果你在书中找到错误,无论在文中或代码中,我们会非常感谢你给我们报告了这些错误。你这么做,可以避免其他读者遭受困扰,并且我们将在随后的再版中改进。如果你发现任何错误,请通过访问http://www.packtpub.com/submit-errata来报告它们:选择你所购买的书名,点击“errata submission form”链接,输入错误的详细细节。一旦你报告的错误得到确认,你的提交将会被接受,并且勘误表将会在我们的网站上更新或者加入已经存在的勘误列表中。通过网址http://www.packtpub.com/support选择书号,你可以看到现有的勘误条目。关于评阅者

Nicolas Gapaillard是Java架构方面的一位热情的自由撰稿人,他了解Java和开源领域中的创新项目。

他曾在开源软件公司Linagora(http://www.linagora.com)的证券部门从事开发工作,由此开始他的职业生涯。该部门旨在开发一个围绕交易安全的开源软件,包括证书管理、密钥文档的存储和认证机制。

之后,他在Smile开源软件整合项目中任职Java技术方面的开发人员、培训人员和技术领导者。

有了上述从业经历之后,他决定创办自己的公司(名为BIGAP,http://bigap.fr),该公司主要做自由撰稿业务,这使得他有更多的时间来学习和研究创新项目。

其中有一个业务是为名为Onecub的法国公司实现根据顾客的类别自动分类电子商务方面的电子邮件。当时,仅仅Mahout可以提供“拿来即用”的算法来解决这些问题。从那以后,Nicolas开始深入地研究Mahout项目和数据挖掘领域。

某一天,Packt出版社看到他撰写的文章(http://nigap.blogspot.fr)并邀请他为该书撰写评论,他非常愉快地接受了这项任务。我非常感谢本书作者为保证书的质量而做出的努力,我也感谢Packt出版社,他们信任我,让我撰写该书的评论,他们非常仔细地管理整个流程,并且允许我评论该书的修订。我还想感谢其他的评论人为本书的修订和内容的质量而提供的帮助,感谢我的妻子让我有自由的时间来写这些评论。

Vignesh Prajapati是Pingax公司大数据方面的科学家。他热爱开源技术(比如R语言、Hadoop、MongoDB和Java语言),主要工作就是使用机器学习、R语言、RHadoop和MongoDB进行数据分析。他在多个算法方面是专家,例如数据ETL、电子商务、Google历史分析和其他数据集的生成推荐、分析和行为定位等。他也撰写了几篇文章来阐述使用R语言、Hadoop和机器学习实现高效的智能大数据应用。他的联系方式是vignesh2066@gmail.com或http://in.linkedin.com/in/vigneshprajapati/。

除了本书以外,Packt还有两本书与他有关:他是《Big Data Analytics with R and Hadoop》一书的作者(Packt出版,https://www.packtpub.com/big-data-analytics-with-r-and-hadoop/book),他也为《Data Manipulation with R》一书(作者:DeMystified,Packt出版)撰写评论。

我感谢Packt出版社提供的这个难得的机会,感谢我的家庭、朋友和Packt出版团队激励和支持我为开源技术贡献自己的力量。

Shannon Quinn将在Carnegie Mellon大学(匹兹堡)攻读计算生物方向的博士学位。他的研究兴趣是和他的导师Chakra Chennubhotla博士一起将谱图理论、机器视觉和模式识别用于生物图像识别,为生物监控构建实时分布式的框架。他还参与了Apache Mahout和其他开源项目的开发工作。致谢

感谢我的家庭在我写书的最为紧张和激动人心的几个月里给予的支持。

感谢我的妻子Michela,她每天激励我成为一个更好的人,而我母亲Milena在我结婚前就已经这样做了。另外,要感谢Lia和Roberto,每次只要我们有所求,他们都会尽力帮助。

还要特别感谢整个Packt出版团队,感谢Gaurav Thingalaya、Amit Singh、Venu Manthena、Shiksha Chaturvedi、Llewellyn F.Rozario、Amey Varangaonkar、Angel Jathanna和Abhijit Suvarna,他们对我给予了足够的耐心,尽管他们没有特别的原因要这么做。

最后,当我写这本书的时候,我找到一个新工作,这要感谢Giuliano Bedeschi。他和他的两个儿子Giovanni和Edoardo一手创办了SPAC公司,这是我值得为之骄傲的为数不多的公司之一。在这个过渡期间,SPAC公司的同事们真正地给予了我很大的帮助。第1章Mahout入门

Mahout是一个机器学习Java类库的集合,用于完成各种各样的任务,如分类、评价性的聚类和模式挖掘等。

当前存在很多比较好的框架,它们对用户友好并且配置了更多的算法来完成这些任务。比如,R社区比从前更加庞大,而在Java世界里,可用的RapidMiner和Weka库已经存在了好多年。

为什么我们要用Mahout来代替前面提到的那些框架呢?真正原因在于前面提到的那些框架并不是为大规模数据集设计的。当我们提到大规模数据集中所谓的数据集时,无论是哪种形式,它的记录都是上亿级别的。

事实上Mahout的威力在于这些算法可以用于Hadoop环境。Hadoop是一个允许算法并行运行在多个机器上(称为节点)的一般框架,它使用了分布式计算的框架。

Hadoop背后的核心理念不是使用单个的主节点来处理大数据的计算和存储任务,而是使用分治法将整个任务分成很多子任务。当所有的单个任务完成后(即每个任务完成计算并生成一个输出),Hadoop将负责管理和重组所有的单个子集。在这种情况下,即使每个阶段并不是很强大,通过将繁重的计算任务分给许多单个计算节点机器来得到最后的结果仍然是可行的。这一理念和第一个分布式计算[1]的例子(SETI@Home 和Great Internet Mersenne Prime [2]Search(GIMPS) )非常接近,不同的是,我们实现的是分布式的机器学习算法。在本书中,我们将在各种各样实例的基础上以一种更好的方式来涵盖细节问题。

[1] 参见http://setiathome.berkeley.edu/。

[2] 参见http://www.mersenne.org/。秘笈1 安装Java和Hadoop

本章的第一部分主要介绍在单台机器上设置工作环境,帮助读者以一种最容易和最快速的方式来编程。

就像之前说的那样,我们关注引导编程人员在开发机器上快速测试他们的Mahout。我们不会过多地说明在一个产品式的Hadoop聚类上如何配置代码,因为那已经超出了本书的范围,需要更为详细和复杂的方法和配置。

我们仅仅需要让读者知道所有的工作都使用单个节点聚类,所以即使在不同的方法中,我们描述算法运行在多个聚类机器上所需要的参数时也是如此,在本书例子中,内部计算经常被迫使用单个聚类。对于如何配置Hadoop聚类,请读者参考另一本书《Hadoop Operations and Cluster Management Cookbook》(Packt出版,Shumin Guo著)。

使用cygwin环境,在Windows系统上也可以测试Hadoop和Mahout代码,但是我们并没有包含这些内容,请读者参考Apache的相关wiki:http://hadoop.apache.org。

考虑到Hadoop可以运行在云环境中,以测试为目的,有能力的读者可以使用Amazon EC2来设置单节点的Hadoop聚类。相关的配置[1]资料可以在Amazon EC2 wiki上找到 。

当我们写本书的时候,微软发布了一个能运行在Azure Cloud上的Hadoop实现,但是我们没有测试它。你可以在网络上找到相关资料。[2]

从Cloudera网站 下载Hadoop(一个完全的安装版Hadoop系统的64位Virtual Box)也是可行的。

不得不说,从头开始配置一个极小的系统将极大地帮助你理解Hadoop和Mahout是如何交互的。

有时,虽然不配置Hadoop,Mahout也可以用来测试代码。然而,事实上,因为只有利用Hadoop的性能和可扩展性Mahout才能发挥优势,我们将很少介绍这种方法。

因此,我们将Hadoop和Mahout安装到Ubuntu系统的32位机器上。为了创建快速的可复制的开发环境,我们将使用虚拟机方式。

我们更喜欢使用VirtualBox机器模拟器(开源软件)。如果对VirtualBox不熟悉,请参考书籍《VirtualBox 3.1:Beginner’s Guide》[3](Packt出版) 。

在本书中,因为我们使用了Windows 7专业版上的VirtualBox虚拟机并想从客户机上获得一个快速的应答,我们决定使用Ubuntu桌面版(10.04,32位)。考虑到主要使用基于Debian的命令,因此在基于Debian的分布上复制Ubuntu是可行的。[4]

Hadoop和Mahout不应该在根用户下运行 ,所以我们创建了一个叫hadoop-mahout的用户来安装和做每件事情。

我们的安装策略是:

·安装JDK 1.7u9

·安装Maven 3.0.4

·安装Hadoop 0.23.5

·安装NetBeans 7.2.1

·编译Mahout 0.8-SNAPSHOT源代码

读者也可以下载最新的Mahout二进制版本并包含必要的jar到样例工程中,但是使用Maven可以帮助读者更好地控制Mahout的发布和JAR包的版本。在这种情况下,所有的Mahout包依赖通过手工下载,这将是一个非常费时和乏味的工作。

Maven也用于测试代码。我们将不会提及Maven所拥有的一些特[5]征,读者可以参考Packt书籍 。

在进入编程步骤之前,需要安装所有的一切,首先从下载开始。

本章简要介绍如何创建一个单节点的Hadoop开发环境。注意 建议读者仔细地读下一个秘笈,因为书中所有的其他秘笈都依赖于正确编译和运行的平台。准备工作

首先下载JDK,Hadoop和Mahout需要JDK 1.6版本或更高版本,[6]本书使用的是JDK 1.7u9,可以从Oracle网站下载 。

Hadoop也能够在虚拟机上的OpenJDK中运行,但是我们更喜欢使用Oracle的JDK。

可以从Apache的某个镜像网站下载Maven 3.0.4,下载终端命令如下:

然后,可以通过类似的方式下载Hadoop 0.23.6:

现在将下载的所有文件放到一个文件目录下,例如:/home/hadoopmahout/Downloads,你会看到下图所示的内容。如何实现它

接下来将完成Java、Maven和Hadoop的环境设置。这三个框架的步骤几乎相同:

·解压缩

·添加正确的平台变量

·测试安装的正确性

现在,我们将解压缩每个文档并将压缩结果从/home/hadoop-mahout/Downloads目录移到/home/hadoop-mahout/目录。这是因为目录名称中的Downloads意味着它可以被别的软件使用或清除掉,而我们想保存我们的安装:

1.在终端窗口输入下列命令进入Downloads目录:

2.输入下列命令:

3.这将解压缩三个文档到目录/home/hadoop-mahout/。hadoop-mahout目录看起来如下图所示。

4.为所需要的一切创建环境变量。这是因为Maven、Hadoop和Mahout需要一个配置变量JAVA_HOME。

5.我们也需要Hadoop能够从每个终端来访问mvn命令。为了让系统每次重启时都能使用这些变量,我们不妨把它们保存到文件.bashrc中。对单用户设置变量而言,这在Ubuntu上是一种容易的方式。

6.为了完成所有这些设置,你需要:

·用你喜欢的文本编辑器打开文件.bashrc,它位于目录/home/hadoopmahout/folder下。

·将下列代码输到文件末尾:

·保存文件并返回控制台。

7.前三行创建了用户变量:JAVA_HOME、MAVEN_HOME和HADOOP_HOME。

8.最后一行将变量连同它们相对的bin位置加入PATH变量中。

9.输入下列命令测试JDK和Maven:

你将会得到如下图所示的输出。

你也会看到如下图所示的输出。

10.为了测试Hadoop是否正确安装,我们将计算Hadoop发布的一个例子,它在一个单机上使用10个MapReduce工作集来计算圆周率pi的值。

11.在HADOOP_HOME下输入下列命令:

12.在终端你将会看到10个MapReduce工作集的工作情况:

到目前为止,我们已经成功地设置了一个单节点的Hadoop用于测试。我们现在开始下载并使用SVN(Subversion)和Maven来编译Mahout源代码。

[1] 参见http://wiki.apache.org/hadoop/AmazonEC2。

[2] 参见http://www.cloudera.com。

[3] 参见http://www.packtpub.com/virtualbox-3-1-beginners-guide/book。

[4] 即登录时以根用户进入,但执行时不以根用户身份执行。——译者注

[5] 参见http://www.packtpub.com/apache-maven-3-0-cookbook/book。

[6] 参见http://www.oracle.com/technetwork/java/javase/downloads。秘笈2 设置Maven和NetBeans开发环境

这一节的内容比较基础,请仔细跟着做一遍,因为书中其他的设置依赖于Maven和NetBeans的成功安装。如果你觉得使用Eclipse比较舒服,建议你读读网站http://maven.apache.org/eclipse-plugin.html提供的帮助手册。然而,因为整本书都是基于NetBeans作为IDE(可视化开发环境),一旦使用Eplipse,每个配置都要重新检查。准备工作

现在我们已经准备好进行最后的部分了—使用NetBeans安装和配置Mahout。

出于编程的目的,我们决定使用NetBeans作为IDE代替其他的IDE(比如Eclipse),因为当写作本书时,Eclipse的最新版本并不完全和Maven 3.0.4的规范兼容。使用Eclipse或IntelliJ也行,但是配置比NetBeans要麻烦些。如果想在Elipse上使用Maven,可以参考:http://maven.apache.org/eclipse-plugin.html。

为了得到最新的发行版本,可以使用SVN编译最新的Mahout镜像,若有必要也可以下载二进制文件来链接JAR包。

可以通过NetBeans编译源文件,所以在进行下面的步骤之前,[1]需要从NetBeans的网站 上下载文件netbeans-7.2.1-ml-javase-linux.sh。

下载之后,Downloads目录如下图所示。

安装完NetBeans后,进入Downloads目录,然后在终端窗口输入下列命令:

执行该步骤后即可结束。hadoop-mahout用户目录看起来如下图所示。

NetBeansProjects目录包含Mahout源代码和新加入的代码。我们现在感兴趣的是实现在NetBeans上编译Mahout源代码。已经成功安装NetBeans,接下来准备使用NetBeans编译Mahout的最新快照。如何实现它

在写本书的时候,Mahout的最新版本是0.8。建议使用该版本,因为它去除了一些bug,与此同时,新算法和新特征在被有活力的社区不断加入新的发行版本中。

1.我们需要从Subversion下载Mahout源,将与Maven相关的工程导入NetBeans,最后安装它们。

2.幸运的是,NetBeans IDE提供了所有这些操作,它们被整合到不同的图形界面上。简单地使用菜单,单击Team→Subversion→Checkout,将http://svn.apache.org/repos/asf/mahout/trunk填入文本框—库网址中,单击Next,填完表单如下图所示。

3.一旦NetBeans下载完整个包,它会问你是否要扫描和打开那个工程。单击对话框上的OK按钮,IDE将导入Maven工程。现在,在Project选项卡,你将会看到如下图所示内容。

4.源代码下载完成后,可以在NetBeansProjects中找到它们。

5.现在使用Maven编译这些源代码,在Mahout Release Package图标上右击,选择Clean and Build项即可。

6.因为编译步骤需要较长的时间,此时可以稍作休息。当你结束休息时,将会看到如下图所示的输出。

我们现在有了测试Mahout所需的一切基础。

我们现在有了测试Mahout所需的一切基础。

如果在NetBeans工程结构中单击依赖图标,你应该可以看到从Apache站点下载的所有JAR包及其依赖JAR包,如下图所示。它是如何工作的

NetBeans使用Subversion插件从Mahout svn库下载最新的源代码。一旦完成,NetBeans将解析源代码库中的pom.xml文件,然后处理Maven源码并编译、测试它们,最后在目录结构下生成JAR包。更多

NetBeans提供给你的仅仅是操作Subversion Maven进程的接口。但是如果使用单一的文本编辑器编程对你来说有点困难,你可以直接使用命令行接口。

以相同的方式,你也可以使用Eclipse访问svn库并使用Maven Eclipse插件来编译它们。

不要忘记,一旦下载完源代码,在准备将Maven工程导入Elipse之前,你需要在源代码的根目录运行下列命令:

这将创建一个可供Eclipse使用的工程导入文件。注意 如果你没有遵循先前的步骤,你的代码可能会有版本问题或编译错误。

[1] 参见www.NetBeans.org。秘笈3 编写一个基本的推荐系统

现在你已经有了一个完全配置好的IDE,里面有从源代码编译的Mahout的最新发行版,我们终于可以测试第一个样例代码了。

为努力从用户的角度做到编码少一点得到多一点,我们将会体验一个使用Mahout编写推荐系统的例子。

顾名思义,一个推荐系统是一款软件,它能够根据你先前的偏好记录为你新的(或存在的)偏好提供一些建议。

比如,关于购买商品的推荐系统能够基于你先前的购买行为而建议下一次应该购买什么商品。

根据推荐算法所分析的数据类型的复杂性,存在不同类型的推荐算法。在我们的例子中,我们将使用Slope One推荐算法,它基于协同过滤(collaborative filter)方法。

自动推荐系统软件是数据挖掘历史上研究最早的问题之一。该问题大体上可以分两步解决:

·读取大量数据,数据包含用户对某个条目的偏好值。

·找到适合推荐给用户的那个条目。

每个在电子商务网站(比如亚马逊,Amazon)上购买过东西的顾客一定会看到站点向你推荐值得购买的新书或新东西。我们会采用用户提供的电影推荐数据,从中挖掘并发现其他还没有看过的电影,通过这种方式来模拟也会得到相同的结果。准备工作

数据挖掘算法对数据是非常渴望的,你给的数据越多算法的输出就越精确。

在进入下一步之前,我们需要下载一些数据集供测试。我们将使用GroupLens数据集来实现电影推荐任务。

GroupLens数据集是一个由明尼苏达州(Minnesota)大学计算机科学与工程系发布的可以自由获取的数据集,它包括100万条由6000个用户对4000个电影的评分等级。

数据可以以文本文件的格式读取,这对Mahout来说,是一种最简单的读取数据的方式。简单地在终端输入下列命令即可下载数据:

解压缩文件,你会看到目录包括下面四个主要的文件:

·users.dat:包含6000个用户。

·movies.dat:包含电影的名字。

·ratings.dat:包含用户和电影之间的关系,该关系是一个数字,用来表示某个用户喜欢某个电影的程度。

·README:主要是对数据格式的解释。

如果你打开ratings.dat文件(你马上就会用到),你会发现下面的数据行:

在每一行,你会看到一个电影评分,解释如下:用户1给电影《One Flew Over the Cuckoo’s Nest》评了5分(最高5分);给电影《James and the Giant Peach》和《My Fair Lady》评的都是3分。最后一个长的数字表示评分的日期/时间。

遗憾的是,尽管Mahout能够处理好输入是文本格式的情形,但这并不是Mahout容易使用的方式。这是因为在我们的例子里分隔符是“::”。这个简单示例将向你展示处理非标准数据格式时会遇到的一般问题。

在我们的例子里面,我们将原始问题转化为另一种格式,如下所示:

大体上,我们将一行行读取原始文件并拷贝每一行到新文件,在这个过程中,去除不重要的信息后就会得到最终的格式。

原始文件也包含对电影的评分值。推荐软件并不关心用户对电影的评分,于是我们删掉它们。我们也删除了评分的日期信息。

就如之前声明的那样,本书中都用Maven来创建例子,所以需要在NetBeans中创建Maven工程。具体步骤如下:

·创建包括main类的Maven工程结构。

·添加Maven依赖到先前编译的Mahout Maven工程。

启动NetBeans,打开“File”菜单选择New Project,从显示的对话框中选择Java Application,此时将会看到如下图所示内容。

完成之后如下图所示。

现在,我们需要添加包依赖到先前编译过的Mahout Maven源代码。为了在Maven工程目录结构下完成这件事情,右击依赖图标从快捷菜单中选择Add dependency。选择依赖并添加完之后如下图所示。

单击Add按钮,过几秒,你将会看到加入的所有Mahout JAR包。如何实现它

现在开始编写和测试第一个例子。步骤如下:

1.将GroupLens格式的ratings.dat转化为CSV格式。

2.创建一个Model类来处理将要使用的新文件ratings.csv的文件格式。

3.在该模型上创建一个简单的推荐系统。

4.从文件ratings.csv中提取整个用户列表需要花费一段时间,之后,在标题上将会看到每个用户的推荐。

遵循前面的步骤,通过下面的代码将会完成它。在进入下一步之前,首先完成一些必要的导入操作。

1.导入的包如下所示:

方法的完整描述如下:

2.基于CSV(Comma-Separated Value)文件建立模型,如下所示:

3.创建SlopeRecommender:

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载