首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > 云计算 >

mahout算法源码分析之Itembased Collaborative Filtering(2)RowSimilarityJob

2013-10-12 
mahout算法源码分析之Itembased Collaborative Filtering(二)RowSimilarityJobMahout版本:0.7,hadoop版本:

mahout算法源码分析之Itembased Collaborative Filtering(二)RowSimilarityJob

Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit。

本篇开始之前先来验证前篇blog的分析结果,编写下面的测试文件来进行对上篇三个job的输出进行读取:

protected void reduce(IntWritable row, Iterable<VectorWritable> partials, Context ctx)        throws IOException, InterruptedException {      Vector allSimilarities = Vectors.merge(partials);      Vector topKSimilarities = Vectors.topKElements(maxSimilaritiesPerRow, allSimilarities);      ctx.write(row, new VectorWritable(topKSimilarities));    }
这里的merge又把所有的项目整合了起来,就等于是和输入一样了(这里应该不是,所以这里还应该编写一个follow仿制代码测试一下),然后topKElements就是把所有的排序,然后输出,所以他的输出应该就是和(3.1.2)中说到的for和TopK共同的作用了吧。输出比如107的simi比较大,那么输出就应该是<item105,item107:simi*105*107,vector[item105:0,item106:simi*105*106]>;

(3.3)reducer:// MergeToTopKSimilaritiesReducer,在combiner中提到的reduce中的merge函数如果又把所有的整合一下的话,那么就没有多大的意义了,这里没有多大的意义是指mapper没有做两种类型的输出了,只输出第二种类型即可。这个还有待验证。。。



分享,成长,快乐

转载请注明blog地址:http://blog.csdn.net/fansy1990



热点排行