Mahout In Aciotn

Mahout In Aciotn

作者:Jack Zhang  来自开拓者部落 ,qq群:248087140,欢迎加入我们!

本文欢迎转载,转载请注明出处 http://my.oschina.net/u/1866370/blog/287907

i.Java和IDE(略)

ii.Maven(略)

iii.Mahout开发环境搭建

1、Mahout官网:http://mahout.apache.org/

2、Mahout官网上关于Mahout依赖的页面 http://mahout.apache.org/general/downloads.html

在2中可以看到Mahout的Maven坐标

<dependency>
    <groupId>org.apache.mahout</groupId>
    <artifactId>mahout-core</artifactId>
    <version>${mahout.version}</version>
</dependency>

具体安装过程

使用Maven使Mahout的环境搭建变得简单方便,只需在pom中添加如下内容即可。

<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<mahout.version>0.6</mahout.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.apache.mahout</groupId>
			<artifactId>mahout-core</artifactId>
			<version>${mahout.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.mahout</groupId>
			<artifactId>mahout-integration</artifactId>
			<version>${mahout.version}</version>
			<exclusions>
				<exclusion>
					<groupId>org.mortbay.jetty</groupId>
					<artifactId>jetty</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.apache.cassandra</groupId>
					<artifactId>cassandra-all</artifactId>
				</exclusion>
				<exclusion>
					<groupId>me.prettyprint</groupId>
					<artifactId>hector-core</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>

说明:

1、Maven的配置说明
<mahout.version>0.6</mahout.version>
以上为将Mahout的版本设置为Maven的全局变量,可以在pom的其他位置,以<version>${mahout.version}</version>的方式引用

<exclusion> 标签
<exclusion>标签的作用是,在导入依赖的时候排除,<exclusion>标签中的jar包
此处排除了org.mortbay.jetty.jetty,org.apache.cassandra.cassandra-all,me.prettyprint.hector-core
其中第二个jar包,在以后的文章中会提到,此处不做说明

2、jar包的说明
mahout-core 为mahout核心包
mahout-integration 将Mahout整合如其他项目的jar包
这坐标的引入将会导致以下全部jar包被引入项目

(包括,mahout的相关包,httpclient,solr,lucene,mongodb和一些在java项目中常常使用的工具包。)

org\apache\mahout\mahout-core\0.6\mahout-core-0.6.jar
org\apache\mahout\mahout-math\0.6\mahout-math-0.6.jar
org\uncommons\maths\uncommons-maths\1.2.2\uncommons-maths-1.2.2.jar
jfree\jcommon\1.0.12\jcommon-1.0.12.jar
com\google\guava\guava\r09\guava-r09.jar
org\apache\mahout\mahout-collections\1.0\mahout-collections-1.0.jar
org\apache\hadoop\hadoop-core\0.20.204.0\hadoop-core-0.20.204.0.jar
commons-cli\commons-cli\1.2\commons-cli-1.2.jar
commons-httpclient\commons-httpclient\3.0.1\commons-httpclient-3.0.1.jar
commons-logging\commons-logging\1.0.3\commons-logging-1.0.3.jar
commons-codec\commons-codec\1.4\commons-codec-1.4.jar
commons-configuration\commons-configuration\1.6\commons-configuration-1.6.jar
commons-collections\commons-collections\3.2.1\commons-collections-3.2.1.jar
commons-digester\commons-digester\1.8\commons-digester-1.8.jar
commons-beanutils\commons-beanutils\1.7.0\commons-beanutils-1.7.0.jar
commons-beanutils\commons-beanutils-core\1.8.0\commons-beanutils-core-1.8.0.jar
org\codehaus\jackson\jackson-core-asl\1.8.2\jackson-core-asl-1.8.2.jar
org\codehaus\jackson\jackson-mapper-asl\1.8.2\jackson-mapper-asl-1.8.2.jar
org\slf4j\slf4j-api\1.6.1\slf4j-api-1.6.1.jar
commons-lang\commons-lang\2.6\commons-lang-2.6.jar
org\uncommons\watchmaker\watchmaker-framework\0.6.2\watchmaker-framework-0.6.2.jar
com\thoughtworks\xstream\xstream\1.3.1\xstream-1.3.1.jar
xpp3\xpp3_min\1.1.4c\xpp3_min-1.1.4c.jar
org\apache\lucene\lucene-core\3.4.0\lucene-core-3.4.0.jar
org\apache\lucene\lucene-analyzers\3.4.0\lucene-analyzers-3.4.0.jar
org\apache\mahout\commons\commons-cli\2.0-mahout\commons-cli-2.0-mahout.jar
org\apache\commons\commons-math\2.2\commons-math-2.2.jar
org\apache\mahout\mahout-integration\0.6\mahout-integration-0.6.jar
commons-dbcp\commons-dbcp\1.4\commons-dbcp-1.4.jar
commons-pool\commons-pool\1.5.6\commons-pool-1.5.6.jar
org\apache\solr\solr-commons-csv\3.4.0\solr-commons-csv-3.4.0.jar
org\mongodb\mongo-java-driver\2.5\mongo-java-driver-2.5.jar
org\mongodb\bson\2.5\bson-2.5.jar

iv.Hadoop(略)

hadoop的安装可查看本博客Hadoop类目下的相关文章

Mahout程序编写

1、向一个用户推荐一个商品

第一步:新建一个文本文件,重命名为intro,复制以下内容到intro.txt,将后缀修改为csv。在实际的开发中,我们也将取得类似的日志数据,作为输入文件。

1,101,5.0
1,102,3.0
1,103,2.5
 
2,101,2.0
2,102,3.0
2,103,5.0
2,104,2.0
 
3,101,2.5
3,104,4.0
3,105,4.5
3,107,5.0
 
4,101,5.0
4,103,3.0
4,104,4.5
4,106,4.0
 
5,101,4.0
5,102,3.0
5,103,2.0
5,104,4.0
5,105,3.5
5,106,4.0

第二步:编写基于用户的协同过滤 程序

需求:向ID为1的用户,推荐物品,推荐的物品数为1。

class RecommenderIntro {
    final static int NEIGHBORHOOD_NUM = 2;
    final static int USER_ID = 1;
    final static int RECOMMEND_NUM = 1;
    public static void main(String[] args) throws IOException, TasteException {
    	/**构建文件对象,注意文件路径要正确*/
    	DataModel model = new FileDataModel(new File("intro.csv"));
    
    	/**用户相识度*/
    	UserSimilarity user = new PearsonCorrelationSimilarity(model);
    	/**近邻*/
    	UserNeighborhood neighborhood  = new NearestNUserNeighborhood(NEIGHBORHOOD_NUM, user, model);
    	/**生成推荐器*/
    	Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, user);
    
    	/**进行推荐 ,向ID为1的用户推荐 1个物品*/
    	List<RecommendedItem> recommendations = recommender.recommend(USER_ID, RECOMMEND_NUM);
    	for(RecommendedItem recommendation:recommendations){
    		System.out.println(recommendation);
    	}
    }
}

推荐结果

RecommendedItem[item:104, value:4.257081]

2、为推荐程序打分

Mahout In Aciotn

时间: 2024-08-27 05:16:22

Mahout In Aciotn的相关文章

mahout之分布式Item-Based使用

一:简介 基于用户的协同推荐算法随着使用者数量的增多,计算的时间就会变长,所以在2001年Sarwar提出了基于项目的协同过滤推荐算法(Item-based Collaborative Filtering Algorithms).基于用户的协同推荐mahout没有实现分布式算法,Mahout基于Item的分布式推荐算法的主要内容见org.apache.mahout.cf.taste.hadoop.item. 二:准备输入文件 采用分布式算法,输入文件首先需存放在hdfs上,文件格式(userid

mahout 随机森林RF算法

在随机森林中的随机性体现在:1.训练数据的随机性 2. 选择分割属性的随机性 能解决分类与回归问题,并且都有很好的估计表现 1.生成数据说明文件 mahout describe -p input.csv -f input.info-d2 I 3 N I 5 N I 3 C L(执行describe生成数据的说明文件) 2.训练模型 mahout buildforest -d input.csv -ds input.info -sl 5 -p -t 5 -o forest_result(生成随机森

[转]hadoop,spark,storm,pig,hive,mahout等到底有什么区别和联系?

摘自知乎大神的论述 作者:Xiaoyu Ma链接:https://www.zhihu.com/question/27974418/answer/38965760来源:知乎著作权归作者所有,转载请联系作者获得授权. 大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的.你可以把它比作一个厨房所以需要的各种工具.锅碗瓢盆,各有各的用处,互相之间又有重合.你可以用汤锅直接当碗吃饭喝汤,你可以用小刀或者刨子去皮.但是每个工具有自己的特性,虽然奇怪

Mahout分布式运行实例:基于矩阵分解的协同过滤评分系统

Apr 08, 2014  Categories in tutorial tagged with Mahout hadoop 协同过滤  Joe Jiang 前言:之前配置Mahout时测试过一个简单的推荐例子,当时是在Eclipse上运行的,由于集成插件的缘故,所以一切进行的都比较顺利,唯一不足的是那是单机运行的,没有急于分布式系统处理.所以基于测试分布式处理环境的目的,下午找了一个实例来运行,推荐系统原型是一个电影评分的系统. 一.问题描述 对于协同过滤(Collaborative Filt

Mahout实现基于用户的协同过滤算法

Mahout中对协同过滤算法进行了封装,看一个简单的基于用户的协同过滤算法. 基于用户:通过用户对物品的偏好程度来计算出用户的在喜好上的近邻,从而根据近邻的喜好推测出用户的喜好并推荐. 图片来源 程序中用到的数据都存在MySQL数据库中,计算结果也存在MySQL中的对应用户表中. package com.mahout.helloworlddemo; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.

mahout(或者hadoop)优先使用用户指定的classpath加载jar包

问题:使用mahout0.8时,出现java.lang.NoSuchMethodError: org.apache.lucene.util.PriorityQueue 类似http://www.warski.org/blog/2013/10/using-amazons-elastic-map-reduce-to-compute-recommendations-with-apache-mahout-0-8/ 原因: $HADOOP_HOME/lib下面有个旧版本的lucene-core-3.6.0

用Mahout构建职位推荐引擎【一起学Mahout】

阅读导读: 1.如何设计职位推荐引擎的指标? 2.简述职位推荐引擎所需要的系统架构? 3.如何对推荐结果进行人工比较? 4.职位推荐引擎中什么情况的数据最好做排除? 1. Mahout推荐系统框架概述 Mahout框架包含了一套完整的推荐系统引擎,标准化的数据结构,多样的算法实现,简单的开发流程.Mahout推荐的推荐系统引擎是模块化的,分为5个主要部分组成:数据模型,相似度算法,近邻算法,推荐算法,算法评分器. 更详细的介绍,请参考文章:从源代码剖析Mahout推荐引擎 2. 需求分析:职位推

mahout部署实践

一 下载mahout并解压 unzip  unzip mahout-distribution-0.9-src.zip 二 设置环境变量 1一些说明 JAVA_HOME mahout运行需指定jdk的目录 MAHOUT_JAVA_HOME指定此变量可覆盖JAVA_HOME值 HADOOP_HOME  如果配置,则在hadoop分布式平台上运行,否则单机运行 HADOOP_CONF_DIR指定hadoop的配置文件目录 MAHOUT_LOCAL  如果此变量值丌为空,则单机运行mahout. MAH

Mahout初步认识

Apache Mahout项目主要包括以下五个部分: 频繁模式挖掘:挖掘数据中频繁出现的项集. 聚类:将诸如文本.文档之类的数据分成局部相关的组. 分类:利用已经存在的分类文档训练分类器,对未分类的文档进行分类. 推荐引擎(协同过滤):获得用户的行为并从中发现用户可能喜欢的事务. 频繁子项挖掘:利用一个项集(查询记录或购物目录)去识别经常一起出现的项目. 在Mahout实现的机器学习算法: 算法类 算法名 中文名 分类算法 Logistic Regression 逻辑回归 Bayesian 贝叶