Mahout In Aciotn

Mahout In Aciotn 

            做者:Jack Zhang  來自開拓者部落 ,qq羣:248087140,歡迎加入咱們!html

            本文歡迎轉載,轉載請註明出處 http://my.oschina.net/u/1866370/blog/287907java


i.Java和IDE(略)

ii.Maven(略)

iii.Mahout開發環境搭建

            一、Mahout官網:http://mahout.apache.org/ mongodb

            二、Mahout官網上關於Mahout依賴的頁面 http://mahout.apache.org/general/downloads.html apache

            在2中能夠看到Mahout的Maven座標api

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

具體安裝過程

           使用Maven使Mahout的環境搭建變得簡單方便,只需在pom中添加以下內容便可。
app

<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>

        說明:工具

一、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包,在之後的文章中會提到,此處不作說明

二、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類目下的相關文章oop

Mahout程序編寫
ui

一、向一個用戶推薦一個商品

        第一步:新建一個文本文件,重命名爲intro,複製如下內容到intro.txt,將後綴修改成csv。在實際的開發中,咱們也將取得相似的日誌數據,做爲輸入文件。google

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]

二、爲推薦程序打分

相關文章
相關標籤/搜索