推薦入門--HelloWorld
1·下載最新版本的mahout,本例使用0.9版本 下載地址
http://mirror.esocc.com/apache/mahout/0.9/
2·新建一個普通的java項目,導入如下依賴包(全部依賴包都在mahout安裝目錄的lib文件夾下)
3·新建如下java類:
package com.xinyuan.hello;
import org.apache.mahout.cf.taste.impl.model.file.*;
import org.apache.mahout.cf.taste.impl.neighborhood.*;
import org.apache.mahout.cf.taste.impl.recommender.*;
import org.apache.mahout.cf.taste.impl.similarity.*;
import org.apache.mahout.cf.taste.model.*;
import org.apache.mahout.cf.taste.neighborhood.*;
import org.apache.mahout.cf.taste.recommender.*;
import org.apache.mahout.cf.taste.similarity.*;
import java.io.*;
import java.util.*;
public class RecommenderIntro {
private RecommenderIntro(){};
public static void main (String args[])throws Exception{
// step:1 構建模型 2 計算類似度 3 查找k緊鄰 4 構造推薦引擎
DataModel model =new FileDataModel(new File(System.getProperty("user.dir")+"/data/hello.txt"));//文件名必定要是絕對路徑
UserSimilarity similarity =new PearsonCorrelationSimilarity(model);
UserNeighborhood neighborhood =new NearestNUserNeighborhood(2,similarity,model);
Recommender recommender= new GenericUserBasedRecommender(model,neighborhood,similarity);
List<RecommendedItem> recommendations =recommender.recommend(1, 2);//爲用戶1推薦兩個ItemID
for(RecommendedItem recommendation :recommendations){
System.out.println(recommendation);
}
}
}
4·在項目目錄中添加數據文件hello.txt
1,101,5
1,102,3
1,103,2.5
2,101,2
2,102,2.5
2,103,5
2,104,2
3,101,2.5
3,104,4
3,105,4.5
3,107,5
4,101,5
4,103,3
4,104,4.5
4,106,4
5,101,4
5,102,3
5,103,2
5,104,4
5,105,3.5
5,106,4
5·添加log4j的配置文件 log4j.properties
# Configure logging for testing: optionally with log file
log4j.rootLogger=WARN, stdout
# log4j.rootLogger=WARN, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
執行結果: