版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#coding=utf-8# Filename:pr.pyS=0,0,0,0,0.3333,0,0,1,0.3333,0.5,0,0,0.3333,0.5,1,0 #原始矩阵U=1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 #全部都为1的矩阵f=1,1,1,1 #物征向量alpha=0.85 # a 值 0-1之间的小数n=len(S) #网页数'''aS a权重值 由google决定值大小,0-1之间,S为原始矩阵 '''def multiGeneMatrix(gene,Matrix): mullist=0*len(Matri
2、x) for row in range(len(Matrix) #定义新的矩阵大小,初始化为0 for i in range(0,len(Matrix): for j in range(0,len(Matrix): mullistij += Matrixij*gene return mullist '''两个矩阵相加'''def addMatrix(Matrix1,Matrix2): if len(Matrix10)!=len(Matrix2): print "这两个矩阵无法相加." return addlist=0*len(
3、Matrix1) for row in range(len(Matrix1) #定义新的矩阵大小 for i in range(0,len(Matrix1): for j in range(0,len(Matrix2): addlistij=Matrix1ij+Matrix2ij return addlist'''矩阵与向量相乘'''def multiMatrixVector(m,v): rv=range(len(v) for row in range(0,len(m): temp=0 for col in range(0,len(m1): te
4、mp+=mrowcol*vcol rvrow=temp return rv #公式f1=multiGeneMatrix(alpha,S)f2=multiGeneMatrix(1-alpha)/len(S0),U)G=addMatrix(f1,f2)print G #google矩阵#迭代过程count=0while(True): count=count +1 pr_next=multiMatrixVector(G,f) print "第 %s 轮迭代" % count print str(round(pr_next0,5) +"t" + str(roun
5、d(pr_next1,5) + "t" + str(round(pr_next2,5) + "t" + str(round(pr_next3,5) if round(f0,5)=round(pr_next0,5) and round(f1,5)=round(pr_next1,5) and round(f2,5)=round(pr_next2,5) and round(f3,5)=round(pr_next3,5): #当前向量与上次向量值偏差不大后,停止迭 break f=pr_nextprint "Page Rank值已计算完成"运
6、行结果:第 1 轮迭代0.15 1.2833 0.8583 1.70831第 2 轮迭代0.15 1.64455 0.7379 1.46746第 3 轮迭代0.15 1.43983 0.89143 1.51864第 4 轮迭代0.15 1.48333 0.80442 1.56213第 5 轮迭代0.15 1.5203 0.82291 1.50666第 6 轮迭代0.14999 1.47315 0.83862 1.53809第 7 轮迭代0.14999 1.49986 0.81858 1.5314第 8 轮迭代0.14999 1.49418 0.82993 1.52572第 9 轮迭代0.149
7、99 1.48935 0.82751 1.53295第 10 轮迭代0.14999 1.4955 0.82546 1.52885第 11 轮迭代0.14999 1.49201 0.82807 1.52971第 12 轮迭代0.14999 1.49274 0.82659 1.53045第 13 轮迭代0.14999 1.49337 0.8269 1.5295第 14 轮迭代0.14999 1.49256 0.82717 1.53003第 15 轮迭代0.14999 1.49301 0.82682 1.52991第 16 轮迭代0.14999 1.49291 0.82701 1.52981第 17
8、 轮迭代0.14999 1.49282 0.82697 1.52993第 18 轮迭代0.14999 1.49292 0.82693 1.52986第 19 轮迭代0.14999 1.49286 0.82697 1.52987第 20 轮迭代0.14999 1.49287 0.82695 1.52987第 21 轮迭代0.14999 1.49287 0.82695 1.52985第 22 轮迭代0.14999 1.49285 0.82695 1.52986第 23 轮迭代0.14999 1.49286 0.82694 1.52985第 24 轮迭代0.14999 1.49285 0.82694
9、 1.52984第 25 轮迭代0.14999 1.49284 0.82694 1.52984第 26 轮迭代0.14999 1.49284 0.82694 1.52983第 27 轮迭代0.14998 1.49284 0.82693 1.52983第 28 轮迭代0.14998 1.49283 0.82693 1.52982第 29 轮迭代0.14998 1.49283 0.82693 1.52982Page Rank值已计算完成#coding=utf-8# FileName:MapReducePageRank.py'''模拟map-reduce的思想,实现AB物理节
10、点的分布计算。'''#矩阵与乘因子def multiGeneMatrix(gene,Matrix): result=0*len(Matrix0) for row in range(len(Matrix0) #定义大小一样新的矩阵,初始化为0 for i in range(0,len(Matrix0): for j in range(0,len(Matrix0): resultij=Matrixij*gene return result#两个矩阵相加def addMatrix(Matrix1,Matrix2): if len(Matrix10)!=len(Matrix21
11、): print "这两个矩阵无法相加." return addList=0*len(Matrix10) for row in range(len(Matrix10) for i in range(0,len(Matrix10): for j in range(0,len(Matrix20): addListij=Matrix1ij+Matrix2ij return addList#两个矩阵合并def addColumnMatrix(Matrix1,Matrix2): result=Matrix1+Matrix2 return result#矩阵与向量相乘def multi
12、MatrixVector(m,v): rv = range(len(m) for row in range(0,len(m): temp=0 for col in range(0,len(m1): temp +=mrowcol*vcol rvrow=temp return rv'''按照map-reduce的思想,现在假设有物理节点A,B参与计算,其中网页1、2保存于A,网页3、4保存于B,试述完整的pagerank计算过程 '''alpha=0.85 #定义google 权重值aS=0,0,0.3333,0,0.3333,0.5,0.3333,
13、0.5 #假设A节点存放 page1 page2网页 原始矩阵bS=0,0,0,1,0,0,1,0 #假设B节点存放 page3 page4 网页 原始矩阵U=1,1,1,1,1,1,1,1 #全部为1的矩阵n=len(aS) #得到网页个数#计算A节点的G 矩阵fa1=multiGeneMatrix(alpha,aS) #google权重值 与 原始矩阵fa2=multiGeneMatrix(1-alpha)/n,U) #(1-a)/n*UaG=addMatrix(fa1,fa2) #aS+(1-a)/n*U#计算B节点的G 矩阵fb1=multiGeneMatrix(alpha,bS)fb
14、2=multiGeneMatrix(1-alpha)/n,U)bG=addMatrix(fb1,fb2)#AB节点特征向量qa_cur=1,1qb_cur=1,1count=1while(True): count = count +1 #得到A节点qG #print aG #print qa_cur qa_next=multiMatrixVector(aG,qa_cur); #得到B节点qG qb_next=multiMatrixVector(bG,qb_cur); #合并两个矩阵 qab_next=addColumnMatrix(qa_next,qb_next); #小数位缩小到5位 qa_
15、cur0=round(qa_cur0,5) qa_cur1=round(qa_cur1,5) qb_cur0=round(qb_cur0,5) qb_cur1=round(qb_cur1,5) qab_next0=round(qab_next0,5) qab_next1=round(qab_next1,5) qab_next2=round(qab_next2,5) qab_next3=round(qab_next3,5) #判断是否收敛到十分接近 if qa_cur0=qab_next0 and qa_cur1=qab_next1 and qb_cur0=qab_next2 and qb_cu
16、r1=qab_next3: break qa_cur0=qab_next0 qa_cur1=qab_next1 qb_cur0=qab_next2 qb_cur1=qab_next3 sum=qa_cur0+qa_cur1+qb_cur0+qb_cur1 print "P1=" + str(qa_cur0/sum) print "P2=" + str(qa_cur1/sum) print "P3=" + str(qb_cur0/sum) print "P4=" + str(qb_cur1/sum) print &q
17、uot;第 %s 轮迭代。" % count运行结果:P1=0.0523267982976P2=0.249982557734P3=0.0523267982976P4=0.645363845671第 2 轮迭代。P1=0.0177595628415P2=0.0409836065574P3=0.0409836065574P4=0.900273224044第 3 轮迭代。P1=0.00261177626645P2=0.0085593855861P3=0.0417625610923P4=0.947066277055第 4 轮迭代。P1=0.000469766144541P2=0.001321
18、21728152P3=0.0421027907045P4=0.956106225869第 5 轮迭代。P1=8.26733246251e-05P2=0.00023148530895P3=0.0421633955588P4=0.957522445808第 6 轮迭代。P1=1.86008444783e-05P2=3.72016889567e-05P3=0.0421681144324P4=0.957776083034第 7 轮迭代。P1=0.0P2=0.0P3=0.0421766145735P4=0.957823385426第 8 轮迭代。P1=0.0P2=0.0P3=0.042164705882
19、4P4=0.957835294118第 9 轮迭代。P1=0.0P2=0.0P3=0.0421804710241P4=0.957819528976第 10 轮迭代。P1=0.0P2=0.0P3=0.0421713639475P4=0.957828636052第 11 轮迭代。P1=0.0P2=0.0P3=0.0421743205248P4=0.957825679475第 12 轮迭代。P1=0.0P2=0.0P3=0.0421623249511P4=0.957837675049第 13 轮迭代。P1=0.0P2=0.0P3=0.0421676545301P4=0.95783234547第 14
20、 轮迭代。P1=0.0P2=0.0P3=0.0421864584325P4=0.957813541567第 15 轮迭代。P1=0.0P2=0.0P3=0.0421977080433P4=0.957802291957第 16 轮迭代。P1=0.0P2=0.0P3=0.042161055231P4=0.957838944769第 17 轮迭代。P1=0.0P2=0.0P3=0.0422000948317P4=0.957799905168第 18 轮迭代。P1=0.0P2=0.0P3=0.042203092862P4=0.957796907138第 19 轮迭代。P1=0.0P2=0.0P3=0.
21、0421557707137P4=0.957844229286第 20 轮迭代。P1=0.0P2=0.0P3=0.0422046637117P4=0.957795336288第 21 轮迭代。P1=0.0P2=0.0P3=0.0421588815433P4=0.957841118457第 22 轮迭代。P1=0.0P2=0.0P3=0.0421745490005P4=0.957825451第 23 轮迭代。P1=0.0P2=0.0P3=0.042220699109P4=0.957779300891第 24 轮迭代。P1=0.0P2=0.0P3=0.0422383227994P4=0.957761
22、677201第 25 轮迭代。P1=0.0P2=0.0P3=0.0421362926998P4=0.9578637073第 26 轮迭代。P1=0.0P2=0.0P3=0.0421216848674P4=0.957878315133第 27 轮迭代。P1=0.0P2=0.0P3=0.0421144987936P4=0.957885501206第 28 轮迭代。P1=0.0P2=0.0P3=0.0421805624075P4=0.957819437593第 29 轮迭代。P1=0.0P2=0.0P3=0.0421636615811P4=0.957836338419第 30 轮迭代。P1=0.0P
23、2=0.0P3=0.0421216848674P4=0.957878315133第 31 轮迭代。P1=0.0P2=0.0P3=0.0421052631579P4=0.957894736842第 32 轮迭代。P1=0.0P2=0.0P3=0.042225730071P4=0.957774269929第 33 轮迭代。P1=0.0P2=0.0P3=0.0421660008877P4=0.957833999112第 34 轮迭代。P1=0.0P2=0.0P3=0.0419370943585P4=0.958062905642第 35 轮迭代。P1=0.0P2=0.0P3=0.04211117349
24、8P4=0.957888826502第 36 轮迭代。P1=0.0P2=0.0P3=0.042297979798P4=0.957702020202第 37 轮迭代。P1=0.0P2=0.0P3=0.0419034090909P4=0.958096590909第 38 轮迭代。P1=0.0P2=0.0P3=0.0423322683706P4=0.957667731629第 39 轮迭代。P1=0.0P2=0.0P3=0.0422282120395P4=0.95777178796第 40 轮迭代。P1=0.0P2=0.0P3=0.0424242424242P4=0.957575757576第 41
25、 轮迭代。P1=0.0P2=0.0P3=0.0420454545455P4=0.957954545455第 42 轮迭代。P1=0.0P2=0.0P3=0.0421455938697P4=0.95785440613第 43 轮迭代。P1=0.0P2=0.0P3=0.0416666666667P4=0.958333333333第 44 轮迭代。P1=0.0P2=0.0P3=0.0420032310178P4=0.957996768982第 45 轮迭代。P1=0.0P2=0.0P3=0.0418181818182P4=0.958181818182第 46 轮迭代。P1=0.0P2=0.0P3=0
26、.0428571428571P4=0.957142857143第 47 轮迭代。P1=0.0P2=0.0P3=0.0413793103448P4=0.958620689655第 48 轮迭代。P1=0.0P2=0.0P3=0.0413436692506P4=0.958656330749第 49 轮迭代。P1=0.0P2=0.0P3=0.0434782608696P4=0.95652173913第 50 轮迭代。P1=0.0P2=0.0P3=0.0424836601307P4=0.957516339869第 51 轮迭代。P1=0.0P2=0.0P3=0.0404411764706P4=0.95
27、9558823529第 52 轮迭代。P1=0.0P2=0.0P3=0.0413223140496P4=0.95867768595第 53 轮迭代。P1=0.0P2=0.0P3=0.0418604651163P4=0.958139534884第 54 轮迭代。P1=0.0P2=0.0P3=0.0418848167539P4=0.958115183246第 55 轮迭代。P1=0.0P2=0.0P3=0.0411764705882P4=0.958823529412第 56 轮迭代。P1=0.0P2=0.0P3=0.0397350993377P4=0.960264900662第 57 轮迭代。P1
28、=0.0P2=0.0P3=0.0444444444444P4=0.955555555556第 58 轮迭代。P1=0.0P2=0.0P3=0.0416666666667P4=0.958333333333第 59 轮迭代。P1=0.0P2=0.0P3=0.0467289719626P4=0.953271028037第 60 轮迭代。P1=0.0P2=0.0P3=0.0421052631579P4=0.957894736842第 61 轮迭代。P1=0.0P2=0.0P3=0.0470588235294P4=0.952941176471第 62 轮迭代。P1=0.0P2=0.0P3=0.04P4=0.96第 63 轮迭代。P1=0.0P2=0.0P3=0.044776119403P4=0.955223880597第 64 轮迭代。P1=0.0P2=0.0P3=0.05P4=0.95第 65 轮迭代。P1=0.0P2=0.0P3=0.0377358490566P4=0.9622
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 神经内科2025年12月份三基考试试题及答案
- 工业园区管委会笔试试题
- 《浩瀚的宇宙》教案物理科课件
- 酒店客房设备采购与供应商管理制度
- 酒店客源市场分析制度
- 车间精细化管理培训课件
- 银行征信业务管理规范制度
- 2026年度村卫生室工作总结(2篇)
- 车间安全锁培训课件
- 车间安全培训的重要性
- 物业管理员实操简答试题附答案
- 造价咨询方案的指导思想
- 网约车停运费民事起诉状模板
- 初中业务校长工作汇报
- 人工智能技术在仲裁中的应用与挑战-洞察及研究
- 2025年公安联考申论真题及解析答案
- 家庭使用电安全知识培训课件
- 肺结核合并糖尿病的护理查房论文
- 2024-2025学年四川省成都市锦江区七中学育才学校七年级数学第一学期期末学业质量监测模拟试题含解析
- 基于单片机的智能垃圾桶的设计
- 影视项目三方战略合作协议(范本)8篇
评论
0/150
提交评论