首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

mahout源码分析之DistributedLanczosSolver(5)Job over

2013-10-31 
mahout源码分析之DistributedLanczosSolver(五)Job overMahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64

mahout源码分析之DistributedLanczosSolver(五)Job over

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

1. Job 篇

接上篇,分析到EigenVerificationJob的run方法:

-217.2301704-50.91237571-56.33124551-437.0302763-2673.201255-17.4178515-22.39572264-10.55527624-18.2026063520.93983969-23.47156786-51.265212439897.17372看到和java计算的结果还是有点误差的,这个等下在后面补充下(主要是验证写个job1的仿制代码);

newNorm就是resultantVector自己点乘然后开根号,值为:5479.061620543984,excel中的是:10263.9596402234。汗,这个值就很不一样了,看来的确是要验证下了;oldNorm就是vector的自乘然后开根号;然后就返回了。

这里就新建了rank个Job了,所以一共有5个Job,这样job都完了。

2.验证篇:

前面说怎么后面计算的误差值那么大?按理说也只是小数点后面的误差而已,通过前面编写的TimesSquareMapperFollow来进行debug(注意这里的设置的路径,在运行RunSVD的时候需要修改DistributedRowMatrix的276、277行,把其注释掉,这样就不会删除那个临时文件了),然后就可以进行测试了,首先来看第一条输出向量的d值:

mahout源码分析之DistributedLanczosSolver(5)Job over

额,感觉和前面的后面8位小数点后才不一样而已;然后是计算的是第一个值:

mahout源码分析之DistributedLanczosSolver(5)Job over

这里就是和excel不一样,咋回事呢?回去看源代码,才发现原来不需要再加上原始值的,如下:

mahout源码分析之DistributedLanczosSolver(5)Job over

这样就对了。




分享,成长,快乐

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


热点排行