码迷,mamicode.com
首页 > 其他好文 > 详细

零基础学习Mahout之-----搭建单机环境

时间:2018-05-09 14:44:36      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:搭建过程   maven   打印   开源   clip   商品   get   ges   加载失败   

一、Mahout是什么?

技术分享图片

Mahout是Apache的一个开源项目(http://mahout.apache.org/),提供了机器学习领域的若干经典算法,以便开发人员快速构建机器学习和数据挖掘方面的应用。

Mahout是基于Hadoop的。从名称上看也很有意思,Hadoop是一个大象的名字,而Mahout则是象夫、看象人,可见二者联系之紧密。(这让我自然联想到Sun和Eclipse...)

 

我此时是一个完全没用过Mahout的门外汉,对Hadoop也没有实际使用经验,算是真正的零基础。我的目标是希望以最简单的方式搭建起一个Mahout的开发环境,以最快的速度让Mahout工作起来,以方便后续的进一步学习。

 

于是,经过一番折腾,便有了本文。本文记录了Windows下Eclipse+Maven+Mahout单机环境的搭建过程。我不知道这是不是最简单的Mahout开发环境,但它应该算得上是比较简单的。

 

二、安装Eclipse

这个没啥说的,再怎么零基础,也要会用Eclipse吧。

Eclipse的下载地址为:http://www.eclipse.org/downloads/,选择标准版就行。

安装完后运行Eclipse,为后续的安装做好准备。

 

三、安装Maven

Maven又是什么?这里只需要知道它是一个项目管理工具就行,有了它,可以非常方面的安装Mahout和相关依赖组件。

Maven的官方网站为:http://maven.apache.org/,它是一个命令行工具,这里我们安装的是它的Eclipse插件版本(m2eclipse),其地址为:http://www.eclipse.org/m2e/,已安装Maven的朋友可以跳过本小节。

 

下面是m2eclipse的安装方法。

进入的下载页面:http://www.eclipse.org/m2e/download/

技术分享图片

 

安装m2eclipse方法有两种,一种是在上面的Install图标上按下鼠标,然后拖动到Eclipse的窗口(看哪里能够释放鼠标就拖到哪里,比如标题栏),稍后就会弹出如下对话框,点击“Confirm”即可。 

技术分享图片

 

第二种方法是通过Eclipse帮助菜单下的安装新软件(Install New Software)安装:

技术分享图片

点了上面菜单后,会弹出如下对话框,点击Add按钮,然后输入Name和Location(http://download.eclipse.org/technology/m2e/releases),Location是从前面的网页里面复制而来。

技术分享图片

 确定后,会显示如下内容,选择所有项目,然后点击Next

技术分享图片

 同意授权,点击Finish,Maven插件就会自动被安装。

技术分享图片

安装完毕后,可通过Help > About > Installation Details确认已安装的插件。

技术分享图片

 

四、使用Maven构建Mahout项目

运行Eclipse,通过菜单File > New > Project新建项目,选择Maven Project

技术分享图片

 直接Next

技术分享图片

 选择maven-archetype-quickstart

技术分享图片

 输入GroupId和ArtifactId,可以根据自己喜好随便命名:

技术分享图片

 点了Finish后,Eclipse便会创建如下一个工程:

技术分享图片

双击pom.xml,在右边的面板中选择Dependencies,点击Add,在弹出的对话框中输入mahout,Maven便会搜索相关包,选择mahout-core,确定。

技术分享图片

 

然后按Ctrl+S保存 pom.xml,maven便会下载相关jar包,在项目的Dependencies目录下可以看到这些jar包。

技术分享图片

到此,我们的环境就已搭建完毕,接下来便是编写代码。

 

 五、编写代码,运行程序

双击App.java,对其进行编辑。

技术分享图片

作为初次尝试,肯定要选比较简单的算法,这里我采用的是基于用户的协同过滤算法来计算推荐商品。完整代码如下:

技术分享图片
 1 package com.mine.mahout.practice; 2  3 import java.io.File; 4 import java.util.List; 5  6 import org.apache.mahout.cf.taste.impl.model.file.FileDataModel; 7 import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood; 8 import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender; 9 import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;10 import org.apache.mahout.cf.taste.model.DataModel;11 import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;12 import org.apache.mahout.cf.taste.recommender.RecommendedItem;13 import org.apache.mahout.cf.taste.recommender.Recommender;14 import org.apache.mahout.cf.taste.similarity.UserSimilarity;15 16 17 public class App 18 {19     public static void main( String[] args )20     {21         try {22             // 从文件加载数据23             DataModel model = new FileDataModel(new File("e:\\data.csv"));24             // 指定用户相似度计算方法,这里采用皮尔森相关度25             UserSimilarity similarity = new PearsonCorrelationSimilarity(model);26             // 指定用户邻居数量,这里为227             UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);28             // 构建基于用户的推荐系统29             Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);30             // 得到指定用户的推荐结果,这里是得到用户1的两个推荐31             List<RecommendedItem> recommendations = recommender.recommend(1, 2);32             // 打印推荐结果33             for (RecommendedItem recommendation : recommendations) {34                 System.out.println(recommendation);35             }36         } catch (Exception e) {37             System.out.println(e);38         }        39     }40 }
技术分享图片

 上面的e:\data.csv为数据文件,数据的第一列为用户ID,第二列为商品ID,第三列为用户对商品的评分:

技术分享图片
1,101,51,102,31,103,2.52,101,22,102,2.52,103,52,104,23,101,2.53,104,43,105,4.53,107,54,101,54,103,34,104,4.54,106,45,101,45,102,35,103,25,104,45,105,3.55,106,4
技术分享图片

(备注:上面的代码和测试数据均参考自这篇博文:http://blog.csdn.net/aidayei/article/details/6626699

接下来就可以运行程序了,选择Java Application:

技术分享图片

 

选择App,或者前面直接对App.java执行运行,而不用对整个项目执行运行。

技术分享图片

最后得到输出结果如下:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: Defaulting to no-operation (NOP) logger implementationSLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.RecommendedItem[item:104, value:4.257081]RecommendedItem[item:106, value:4.0]

可以看到,Mahout为用户1提供了两个推荐商品,分别是104和106。

 

这样,我们便完成了第一个Mahout程序,整个过程还算简单吧?希望对“零基础”的朋友有所帮助。

 

补充:前面的运行结果显示三行红字,说是slf4j里面的StaticLoggerBinder加载失败,虽说它不影响程序运行结果,但看着实在烦人,解决办法是再次编辑pom.xml的dependencies,添加一个slf4j-nop包即可。

技术分享图片

 

(本文已移至个人网站freefalcon.cn

 

零基础学习Mahout之-----搭建单机环境

标签:搭建过程   maven   打印   开源   clip   商品   get   ges   加载失败   

原文地址:https://www.cnblogs.com/jpfss/p/9013329.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!