版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据分析与可视化第七章图结构数据和网络模型7.1有向图和多重图7.2图的聚集系数7.3社会网络分析7.4可平面图的检验7.5有向无环图的检验7.6最大流7.7随机块模型第七章图结构数据和网络模型2《数据分析与可视化》第七章图结构数据和网络模型7.1.1存储图数据7.1.2图形展示7.1有向图和多重图3《数据分析与可视化》第七章图结构数据和网络模型连通图(ConnectedGraph),节点(Node)(也可叫做一个顶点(Vertex)),连通路径为一条边(Edge)。如果只有单向连接,那么它就是有向图(DirectedGraph)7.1有向图和多重图4《数据分析与可视化》第七章图结构数据和网络模型7.1.1存储图数据图数据通常为邻接矩阵,除非它是稀疏的。假设图有V个节点,邻接矩阵是有V行的矩阵。7.1有向图和多重图5《数据分析与可视化》第七章图结构数据和网络模型
ABCDEFA02526---B-085510-C26850--10D---0-11E---9088F---11880
芝加哥波士顿纽约华盛顿迈阿密达拉斯芝加哥01613-1145--波士顿16130338725--纽约-33803832145-华盛顿1145725383017092113迈阿密--2145170902161达拉斯---211321610邻接矩阵1邻接矩阵2importscipy.sparseassparsematrixA=sparse.lil_matrix((6,6))matrixA=sparse.lil_matrix([[0,25,26,0,0,0],[0,0,85,5,10,0],[26,85,0,0,0,10],[0,0,0,0,0,11],[0,0,0,9,0,88],[0,0,0,11,88,0]])print(matrixA)(0,1)25(0,2)26(1,2)85(1,3)5(1,4)10(2,0)26(2,1)85(2,5)10(3,5)11(4,3)9(4,5)88(5,3)11(5,4)887.1有向图和多重图6《数据分析与可视化》第七章图结构数据和网络模型7.1.2图形展示igragh:提供多种格式,如GraphML、GML、LGL和NCOL仅完全支持DL文件格式优点:便捷方式来配置和展示图并将它们以SVG(ScalableVectorGraphics,可缩放图形阵列)格式存储,以便它们可以嵌入HTML文件7.1有向图和多重图7《数据分析与可视化》第七章图结构数据和网络模型使用igraph绘制星形图7.1有向图和多重图8《数据分析与可视化》第七章图结构数据和网络模型fromigraphimport*vertices=["A","B","C","D","E","F","G","H","I","J"]edges=[(0,1),(1,2),(2,3),(3,4),(4,5),(5,6),(6,7),(7,1),(1,8),(8,2),(2,4),(4,9),(9,5),(5,7),(7,0)]graphStyle={'vertex_size':20}g=Graph(vertex_attrs={"label":vertices},edges=edges,directed=True)g.write_svg("simple_star.svg",width=500,height=300,**graphStyle)7.1有向图和多重图9《数据分析与可视化》第七章图结构数据和网络模型使用igraph绘制无向图7.1有向图和多重图10《数据分析与可视化》第七章图结构数据和网络模型fromigraphimportreadg=read("./data/",format="pajek")g.vs["color"]="#3d679d"g.es["color"]="red"graphStyle={'vertex_size':12,'margin':6}#graphStyle["layout"]=g.layout("fr")#optionalg.write_svg("ragusa_graph.svg",width=600,height=600,**graphStyle)7.1有向图和多重图11《数据分析与可视化》第七章图结构数据和网络模型#设置圆形布局graphStyle["layout"]=g.layout("circle")7.1.2图形展示NetworkX:用于网络和图形分析的库找源节点到目的节点的最短路径找度分布以绘制与交汇点相似的节点找图的聚集系数7.1有向图和多重图12《数据分析与可视化》第七章图结构数据和网络模型使用NetworkX配置有向图权重7.1有向图和多重图13《数据分析与可视化》第七章图结构数据和网络模型importmatplotlib.pyplotaspltimportpylabfrompylabimportrcParamsimportnetworkxasnximportnumpyasnp#设置图形显示尺寸为10英寸×10英寸(1英寸=2.54厘米)rcParams['figure.figsize']=10,10G=nx.DiGraph()#添加边和权重G.add_edges_from([('K','I'),('R','T'),('V','T')],weight=3)G.add_edges_from([('T','K'),('T','H'),('I','T'),('T','H')],weight=4)G.add_edges_from([('I','R'),('H','N')],weight=5)G.add_edges_from([('R','N')],weight=6)7.1有向图和多重图14《数据分析与可视化》第七章图结构数据和网络模型#用这些值来决定节点的颜色val_map={'K':1.5,'I':0.9,'R':0.6,'T':0.2}values=[val_map.get(node,1.0)fornodeinG.nodes()]edge_labels=dict([((u,v,),d['weight'])foru,v,dinG.edges(data=True)])#设置边的颜色red_edges=[('R','T'),('T','K')]edge_colors=['green'ifnotedgeinred_edgeselse'red'foredgeinG.edges()]pos=nx.spring_layout(G)nx.draw_networkx_edges(G,pos,width=2.0,alpha=0.65)nx.draw_networkx_edge_labels(G,pos,edge_labels=edge_labels)nx.draw(G,pos,node_color=values,node_size=1500,edge_color=edge_colors,edge_cmap=plt.cm.Reds)pylab.show()7.1有向图和多重图15《数据分析与可视化》第七章图结构数据和网络模型蛋白质相互作用序列空间图7.1有向图和多重图16《数据分析与可视化》第七章图结构数据和网络模型
7.2图的聚集系数17《数据分析与可视化》第七章图结构数据和网络模型
importnetworkxasnxfrompylabimportrcParamsrcParams['figure.figsize']=12,12G=nx.read_gml('./data/lesmiserables.gml')G8=G.copy()dn=nx.degree(G8)forninlist(G8.nodes()):ifdn[n]<=8:G8.remove_node(n)pos=nx.spring_layout(G8)nx.draw(G8,node_size=10,edge_color='b',alpha=0.45,font_size=9,pos=pos)labels=nx.draw_networkx_labels(G8,pos=pos)18《数据分析与可视化》第七章图结构数据和网络模型7.2图的聚集系数defvaluegetter(*values):iflen(values)==1:item=values[0]defg(obj):returnobj[item]else:defg(obj):returntuple(obj[item]foriteminvalues)returng19《数据分析与可视化》第七章图结构数据和网络模型7.2图的聚集系数defclustering_coefficient(G,vertex):neighbors=G[vertex].keys()iflen(neighbors)==1:return-1.0links=0fornodeinneighbors:foruinneighbors:ifuinG[node]:links+=1ccoeff=2.0*links/(len(neighbors)*(len(neighbors)-1))returnlinks,len(neighbors),ccoeff20《数据分析与可视化》第七章图结构数据和网络模型7.2图的聚集系数defcalculate_centrality(G):degc=nx.degree_centrality(G)nx.set_node_attributes(G,degc,'degree_cent')degc_sorted=sorted(degc.items(),key=valuegetter(1),reverse=True)forkey,valueindegc_sorted[0:10]:print("DegreeCentrality:",key,value)returnG,degcprint("Valjean",clustering_coefficient(G8,"Valjean"))print("Marius",clustering_coefficient(G8,"Marius"))print("Gavroche",clustering_coefficient(G8,"Gavroche"))print("Babet",clustering_coefficient(G8,"Babet"))print("Eponine",clustering_coefficient(G8,"Eponine"))print("Courfeyrac",clustering_coefficient(G8,"Courfeyrac"))print("Comeferre",clustering_coefficient(G8,"Combeferre"))calculate_centrality(G8)21《数据分析与可视化》第七章图结构数据和网络模型7.2图的聚集系数#输出的文本结果Valjean(82,14,0.9010989010989011)Marius(94,14,1.032967032967033)Gavroche(142,17,1.0441176470588236)Babet(60,9,1.6666666666666667)Eponine(36,9,1.0)Courfeyrac(106,12,1.606060606060606)Comeferre(102,11,1.8545454545454545)DegreeCentrality:Gavroche0.708333333333DegreeCentrality:Valjean0.583333333333DegreeCentrality:Enjolras0.583333333333DegreeCentrality:Marius0.583333333333DegreeCentrality:Courfeyrac0.5DegreeCentrality:Bossuet0.5DegreeCentrality:Thenardier0.5DegreeCentrality:Joly0.458333333333DegreeCentrality:Javert0.458333333333DegreeCentrality:Feuilly0.45833333333322《数据分析与可视化》第七章图结构数据和网络模型7.2图的聚集系数#绘制的网格图23《数据分析与可视化》第七章图结构数据和网络模型7.2图的聚集系数《悲惨世界》人物关系图
此时Comeferre恰好具有最大的聚集系数24《数据分析与可视化》第七章图结构数据和网络模型7.3社交网络分析访问流程:身份验证→获取确认链接例:访问Twitter数据使用python-twitter,获取、汇总数据存储在cPickle中25《数据分析与可视化》第七章图结构数据和网络模型7.3社交网络分析importcPickleimportos#使用方法#$设置CONSUMER_KEY,CONSUMER_SECRET,ACCESS_TOKEN_KEYS,ACCESS_TOKEN_SECRET#作为环境变量#$pythonget_data.py#downloadsfriendandfollowerdatato./data#在运行时看到的错误#raiseURLError(err)#urllib2.URLError:<urlopenerror[Errno104]Connectionresetbypeer>DATA_DIR="data"#好友/关注者数据的存储目录#我们要分析的网名列表screen_names=['KirthiRaman','Lebron']26《数据分析与可视化》第七章图结构数据和网络模型7.3社交网络分析defget_filenames(screen_name): """Buildthefriendsandfollowersfilenames""" returnos.path.join(DATA_DIR,"%s.friends.pickle"%(screen_name)),os.path.join(DATA_DIR,"%s.followers.pickle"%(screen_name))if__name__=="__main__": #登录账户
t=twitter.Api(consumer_key='k7atkBNgoGrioMS...',consumer_secret='eBOx1ikHMkFc...', access_token_key='8959...', access_token_secret='O7it0...');printt.VerifyCredentials()
27《数据分析与可视化》第七章图结构数据和网络模型7.3社交网络分析forscreen_nameinscreen_names:fr_filename,fo_filename=get_filenames(screen_name) print"Checkingfor:",fr_filename,fo_filename ifnotos.path.exists(fr_filename): print"Gettingfriendsfor",screen_name fr=t.GetFriends(screen_name=screen_name) cPickle.dump(fr,open(fr_filename,"w"),protocol=2) ifnotos.path.exists(fo_filename): print"Gettingfollowersfor",screen_name fo=t.GetFollowers(screen_name=screen_name) cPickle.dump(fo,open(fo_filename,"w"),protocol=2)
pythonget_data.pypythonsummarise_data.pypythondraw_network.py28《数据分析与可视化》第七章图结构数据和网络模型7.3社交网络分析运行结果如图:图Twitter网络中粉丝信息29《数据分析与可视化》第七章图结构数据和网络模型7.4可平面图的检验定义:可以在没有任何相交的边的平面上绘制的图绘制时必须从一个节点开始,从一条边绘制到另一条边,并在继续绘制时跟踪这些面可平面图示例30《数据分析与可视化》第七章图结构数据和网络模型7.4可平面图的检验
图可平面图示例31《数据分析与可视化》第七章图结构数据和网络模型7.4可平面图的检验importplanarityimportnetworkxasnx#8个节点的完整图,G8G8=plete_graph(8)#G8不是可平面图print(planarity.is_planar(G8))#将显示错误,因为G8不是可平面图K=planarity.kuratowski_subgraph(G8)#将显示边print(K.edges())#将显示图nx.draw(G8)False[(0,4),(0,5),(0,7),(2,4),(2,5),(2,7),(3,5),(3,6),(3,7),(4,6)]32《数据分析与可视化》第七章图结构数据和网络模型7.4可平面图的检验完全图该示例说明下图包含8个节点的完全图不是可平面图33《数据分析与可视化》第七章图结构数据和网络模型7.5有向无环图的检验有向无环图(DirectedAcyclicGraph,DAG)定义:从给定节点A到B的边将指向特定方向(A→B或B→A)并且是无环的,同时,它们不会循环例:字典树34《数据分析与可视化》第七章图结构数据和网络模型7.5有向无环图的检验importmatplotlib.pyplotaspltimportpylabfrompylabimportrcParamsimportnetworkxasnximportnumpyasnp#设置图形显示尺寸为10×10英寸rcParams['figure.figsize']=10,10G=nx.DiGraph()#添加边和权重G.add_edges_from([('K','I'),('R','T'),('V','T')],weight=3)G.add_edges_from([('T','K'),('T','H'),('T','H')],weight=4)#用这些值来决定节点的颜色val_map={'K':1.5,'I':0.9,'R':0.6,'T':0.2}values=[val_map.get(node,1.0)fornodeinG.nodes()]35《数据分析与可视化》第七章图结构数据和网络模型7.5有向无环图的检验edge_labels=dict([((u,v,),d['weight'])foru,v,dinG.edges(data=True)])#设置边颜色red_edges=[('R','T'),('T','K')]edge_colors=['green'ifnotedgeinred_edgeselse'red'foredgeinG.edges()]pos=nx.spring_layout(G)nx.draw_networkx_edges(G,pos,width=2.0,alpha=0.65)nx.draw_networkx_edge_labels(G,pos,edge_labels=edge_labels)nx.draw(G,pos,node_color=values,node_size=1500,edge_color=edge_colors,edge_cmap=plt.cm.Reds)pylab.show()nx.is_directed_acyclic_graph(G)True36《数据分析与可视化》第七章图结构数据和网络模型7.5有向无环图的检验该示例中的有向无环图:有向无环图37《数据分析与可视化》第七章图结构数据和网络模型7.6最大流定义:流向图是从源到目的地的有向图,其容量沿每条边分配边应当有容量,表明该边最多可以支持多少流量。如果该容量不存在,则假定它具有无限容量流向图示例38《数据分析与可视化》第七章图结构数据和网络模型7.6最大流代码示例:importnetworkxasnxG=nx.DiGraph()G.add_edge('p','y',capacity=5.0)G.add_edge('p','s',capacity=4.0)G.add_edge('y','t',capacity=3.0)G.add_edge('s','h',capacity=5.0)G.add_edge('s','o',capacity=4.0)flow_value=nx.maximum_flow_value(G,'p','o')print("Flowvalue",flow_value)nx.draw(G,node_color='#a0cbe2')Flowvalue4.0使用NetworkX包中maximum_flow_value(Graph,from,to)39《数据分析与可视化》第七章图结构数据和网络模型7.6最大流流向图40《数据分析与可视化》第七章图结构数据和网络模型7.7随机块模型简单定义:以标量n为特征。这表示组的数量或集群的数量,以及显示节点和其连接的矩阵PyMC包:提供马尔可夫链蒙特卡罗(MarkovChainMonteCarlo,MCMC)和3个概率模型构建块的包StochPy包:可用于随机建模41《数据分析与可视化》第七章图结构数据和网络模型7.7随机块模型importpymcasmcfrompylabimportrcParams#
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环境监测仪器设备使用手册
- 机械加工零件质量检测标准操作流程
- 家用电器安全标准IEC60335-1解读
- 2026年小学教资备考真题及答案
- 物流运输与仓储管理方案范本
- 幼儿科学课《小鸡和小鸭》教学总结
- 三年级续写故事作文指导与范文分析
- 数学教师年度工作计划制定技巧
- 2026年高考化学全国一卷真题试卷
- 2026年高考语文作文全国一卷真题解析含答案
- 2025年初中语文综合素质测试考试题及答案
- 超星尔雅学习通《光影中国(上海大学)》2025章节测试附答案
- 2025电力系统动态记录装置技术规范
- 2024-2025学年江苏省南通市通州区五年级(上)期末数学试卷(含答案)
- 暖通自控培训
- T-QGCML 4443-2024 漆树籽油团体标准
- 数字与图像处理-终结性考核-国开(SC)-参考资料
- 教科版六年级科学上册知识清单(新版)
- 2013清单工程量计算规则
- 我爱五指山我爱万泉河混声合唱谱
- 钬激光在皮肤科手术中的临床应用
评论
0/150
提交评论