mahout推荐1

1、准备数据:

intro.csv:

1,101,5.0
1,102,3.0
1,103,2.5

2,101,2.0
2,102,2.5
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

2、编程实现:

  目的:为用户1推荐一件商品看看:

package mahout;

import java.io.File;
import java.util.List;

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.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 org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
/**
 * 基于用户的推荐程序
 * @author Administrator
 *
 */
public class RecommenderIntro {

	public static void main(String[] args) throws Exception {
		//装载数据文件,实现存储,并为计算提供所需的所有偏好,用户和物品数据
		DataModel model = new FileDataModel(new File("data/intro.csv"));
		//用户相似度,给出两个用户的相似度,有多种度量方式
		UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
		//用户邻居,与给定用户最相似的一组用户
		UserNeighborhood neighborhood = new NearestNUserNeighborhood(2,
				similarity, model);
		//推荐引擎,合并这些组件,实现推荐
		Recommender recommender = new GenericUserBasedRecommender(model,
				neighborhood, similarity);
		//为用户1推荐一件物品1,1
		List<RecommendedItem> recommendedItems = recommender.recommend(1, 1);
		//输出
		for (RecommendedItem item : recommendedItems) {
			System.out.println(item);
		}
	}
}

输出结果:

14/08/04 08:46:31 INFO file.FileDataModel: Creating FileDataModel for file data\intro.csv
14/08/04 08:46:31 INFO file.FileDataModel: Reading file info...
14/08/04 08:46:31 INFO file.FileDataModel: Read lines: 21
14/08/04 08:46:31 INFO model.GenericDataModel: Processed 5 users
RecommendedItem[item:104, value:4.257081]

当然也可以推荐多件商品,那就是将recommender.recommend(1,N)即可。

推荐效果不错。

mahout推荐1,布布扣,bubuko.com

时间: 2024-11-08 19:03:24

mahout推荐1的相关文章

Mahout推荐算法API详解

前言 用Mahout来构建推荐系统,是一件既简单又困难的事情.简单是因为Mahout完整地封装了“协同过滤”算法,并实现了并行化,提供非常简单的API接口:困难是因为我们不了解算法细节,很难去根据业务的场景进行算法配置和调优. 本文将深入算法API去解释Mahout推荐算法底层的一些事. 1. Mahout推荐算法介绍 Mahoutt推荐算法,从数据处理能力上,可以划分为2类: 单机内存算法实现 基于Hadoop的分步式算法实现 1). 单机内存算法实现 单机内存算法实现:就是在单机下运行的算法

mahout实现基于用户的Mahout推荐程序

/* * 这里做的是一个基于用户的Mahout推荐程序 * 这里利用已经准备好的数据. * */ package byuser; import java.io.File; import java.io.IOException; import java.util.List; import org.apache.mahout.cf.taste.common.TasteException; import org.apache.mahout.cf.taste.impl.model.file.FileDa

Mahout推荐的简单实现

由于course project需要,我最近看了一下Mahout的推荐实现.最初看到的是这篇文章.里面的代码毫无问题,不过引包的时候错误重重.因此重新写一下,希望能帮助到有同样问题的同学.废话不多说,上代码: public static void main(String[] args) throws Exception { System.out.println("1"); File f = new File("C:/Users/Administrator/Desktop/te

Mahout推荐算法之SlopOne

Mahout推荐算法之SlopOne 一.       算法原理 有别于基于用户的协同过滤和基于item的协同过滤,SlopeOne采用简单的线性模型估计用户对item的评分.如下图,估计UserB对ItemJ的偏好 图(1) 在真实情况下,该方法有如下几个问题: 1.  为什么要选择UserA计算? 2.  对大量稀疏的情况如何处理,而这种情况是最为普遍的. 图(2) Item1和item2的相似度:((5-3)+(3-4))/2=0.5 Item1和Item3的相似度:(5-2)/1=3 L

mahout推荐2

设计好了一个推荐程序,如何来完成评估呢? 一般是使用一个真实数据的样例作为测试数据来仿真,来看估计值和实际值的差别,0.0意味着完美的估计,就是没有差别. 一是使用平均差值(直观,易于理解),一是使用均方根. 针对mahout推荐1的推荐程序进行评估: package mahout; import java.io.File; import org.apache.mahout.cf.taste.common.TasteException; import org.apache.mahout.cf.t

Mahout推荐算法API详解【一起学Mahout】

阅读导读: 1.mahout单机内存算法实现和分布式算法实现分别存在哪些问题? 2.算法评判标准有哪些? 3.什么会影响算法的评分? 1. Mahout推荐算法介绍 Mahout推荐算法,从数据处理能力上,可以划分为2类: 单机内存算法实现 基于Hadoop的分步式算法实现 1). 单机内存算法实现 单机内存算法实现:就是在单机下运行的算法,是由cf.taste项目实现的,像我们熟悉的UserCF,ItemCF都支持单机内存运行,并且参数可以灵活配置.单机算法的基本实例,请参考文章:用Maven

mahout推荐4-评估GroupLens数据集

使用GroupLens数据集ua.base 这是一个tab分割的文件,用户Id,物品Id,评分(偏好值),以及附加信息.可用吗?之前使用的是CSV格式,现在是tsv格式,可用,使用FileDataModel 对mahout推荐2中的评估程序使用这个数据集测试: package mahout; import java.io.File; import org.apache.mahout.cf.taste.common.TasteException; import org.apache.mahout.

mahout推荐3-评估查准率和查全率

通过估计偏好值来生成推荐结果并非绝对必要.给出一个从优到劣的推荐列表对于许多场景都够用了,而不必包含估计的偏好值. 查准率:在top结果中相关结果的比例 查全率:所有相关结果,包含在top结果中的比例 对上个例子进行测试: package mahout; import java.io.File; import org.apache.mahout.cf.taste.common.TasteException; import org.apache.mahout.cf.taste.eval.IRSta

Mahout推荐算法API具体解释【一起学Mahout】

阅读导读: 1.mahout单机内存算法实现和分布式算法实现分别存在哪些问题? 2.算法评判标准有哪些? 3.什么会影响算法的评分? 1. Mahout推荐算法介绍 Mahout推荐算法,从数据处理能力上,能够划分为2类: 单机内存算法实现 基于Hadoop的分步式算法实现 1). 单机内存算法实现 单机内存算法实现:就是在单机下执行的算法,是由cf.taste项目实现的,像我们熟悉的UserCF,ItemCF都支持单机内存执行.而且參数能够灵活配置.单机算法的基本实例.请參考文章:用Maven