Javase小例子
1:用户推荐数据:
用户id 商品id 评分
1,01,2.0
1,02,1.0
1,03,2.5
1,04,5.0
1,05,5.0
2,01,1.0
2,03,4.5
2,04,4.0
2,06,3.0
3,01,3.5
3,04,2.0
3,05,3.0
3,07,5.0
4,01,5.0
4,03,3.0
4,05,3.5
4,07,4.0
4,08,6.0
5,01,4.0
5,02,3.0
5,04,2.0
5,09,4.0
5,05,3.5
5,06,4.0
2:maven依赖:
http://mvnrepository.com/artifact/org.apache.mahout/mahout-core
http://mvnrepository.com/artifact/org.apache.mahout/mahout-integration
3:主程序代码()
import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood;
import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
import org.apache.mahout.cf.taste.impl.similarity.EuclideanDistanceSimilarity;
import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.recommender.Recommender;
import org.apache.mahout.cf.taste.similarity.UserSimilarity;
import java.io.File;
import java.io.IOException;
import java.util.List;
public class C {
public static void main(String[] args) {
//准备数据
File file=new File("D:\\data\\data.txt");
DataModel dataModel= null;
try {
//加载数据
dataModel = new FileDataModel(file);
//计算相似度这里采用欧式距离
UserSimilarity similarity=new EuclideanDistanceSimilarity(dataModel);
//基于5个邻居计算相似度
UserNeighborhood neighborhood=new NearestNUserNeighborhood(5,similarity,dataModel);
//基于用户协同推荐
Recommender recommender=new GenericUserBasedRecommender(dataModel,neighborhood,similarity);
int userid=3;
//给用户id为3的推荐两项项目。
List<RecommendedItem> list=recommender.recommend(userid,2);
//打印输出
for (RecommendedItem item:list){
System.out.println(item);
System.out.println(item.getItemID());
System.out.println(item.getValue());
System.out.println("\n");
}
} catch (IOException e) {
System.out.println("filed");
e.printStackTrace();
} catch (TasteException e) {
System.out.println("filed");
e.printStackTrace();
}
}
}
4:实现效果: