设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 重新 试卷 创业者
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

大势所趋!数据科学家必知的5种图算法(2)

发布时间:2019-09-26 10:09 所属栏目:21 来源:读芯术
导读:应用 Dijkstra算法的演变版本被广泛应用于谷歌地图中用来寻找最短路径 假设你在沃尔玛工作,已知不同的通道和所有通道之间的距离,求出A通道到客户所在的D通道的最短路径。 领英上有很多一级联系和二级联系。这些联

应用

  • Dijkstra算法的演变版本被广泛应用于谷歌地图中用来寻找最短路径
  • 假设你在沃尔玛工作,已知不同的通道和所有通道之间的距离,求出A通道到客户所在的D通道的最短路径。
大势所趋!数据科学家必知的5种图算法
  •  领英上有很多一级联系和二级联系。这些联系背后都是如何运作的呢?
大势所趋!数据科学家必知的5种图算法

编码

  1. print(nx.shortest_path(g, 'Stuttgart','Frankfurt',weight='weight')) 
  2. print(nx.shortest_path_length(g, 'Stuttgart','Frankfurt',weight='weight')) 
  3. -------------------------------------------------------- 
  4. ['Stuttgart', 'Numberg', 'Wurzburg', 'Frankfurt'] 
  5. 503 

还可以使用以下命令找到所有城市对之间的最短路径:

  1. for x in nx.all_pairs_dijkstra_path(g,weight='weight'): 
  2.  print(x) 
  3. -------------------------------------------------------- 
  4. ('Mannheim', {'Mannheim': ['Mannheim'], 'Frankfurt': ['Mannheim', 'Frankfurt'], 'Karlsruhe': ['Mannheim', 'Karlsruhe'], 'Augsburg': ['Mannheim', 'Karlsruhe', 'Augsburg'], 'Kassel': ['Mannheim', 'Frankfurt', 'Kassel'], 'Wurzburg': ['Mannheim', 'Frankfurt', 'Wurzburg'], 'Munchen': ['Mannheim', 'Karlsruhe', 'Augsburg', 'Munchen'], 'Erfurt': ['Mannheim', 'Frankfurt', 'Wurzburg', 'Erfurt'], 'Numberg': ['Mannheim', 'Frankfurt', 'Wurzburg', 'Numberg'], 'Stuttgart': ['Mannheim', 'Frankfurt', 'Wurzburg', 'Numberg', 'Stuttgart']})('Frankfurt', {'Frankfurt': ['Frankfurt'], 'Mannheim': ['Frankfurt', 'Mannheim'], 'Kassel': ['Frankfurt', 'Kassel'], 'Wurzburg': ['Frankfurt', 'Wurzburg'], 'Karlsruhe': ['Frankfurt', 'Mannheim', 'Karlsruhe'], 'Augsburg': ['Frankfurt', 'Mannheim', 'Karlsruhe', 'Augsburg'], 'Munchen': ['Frankfurt', 'Wurzburg', 'Numberg', 'Munchen'], 'Erfurt': ['Frankfurt', 'Wurzburg', 'Erfurt'], 'Numberg': ['Frankfurt', 'Wurzburg', 'Numberg'], 'Stuttgart': ['Frankfurt', 'Wurzburg', 'Numberg', 'Stuttgart']}).... 

3. 最小生成树(MST)

现在另一个问题来了。假设你在水管铺设公司或互联网纤维公司工作,需要用最少的电线/管道连接图中的所有城市,这该怎么做呢?

大势所趋!数据科学家必知的5种图算法

一个无向图,它的MST在右边

应用

  • MST被直接应用于网络设计中。其中包括电脑网络、电讯网络、运输网络、供水网络和电网(最初设计目的)
  • MST还用于解决旅行商问题
  • 聚类——首先建构MST,接着用簇间距离和簇内距离确定阈值,从而打破MST中的一些联系
  • 图像分割——首先在图中构建MST,其中像素是节点,像素之间的距离基于一些相似性度量(颜色、强度等)

编码

  1. # nx.minimum_spanning_tree(g) returns a instance of type graph 
  2. nx.draw_networkx(nx.minimum_spanning_tree(g)) 
大势所趋!数据科学家必知的5种图算法

本图中的MST

如图所示,上图中便是要铺设的电线。

4. 网页排名

大势所趋!数据科学家必知的5种图算法

上图便是谷歌一直以来的网页排名算法。它根据输入和输出连接的数量和质量为页面分配分数。

应用

网页排名可用于需要估算网络节点重要性的任何地方。

  • 用于使用引文找到最有影响力的论文
  • 在谷歌中用于网页排名
  • 还可用来给推特排序——以用户和推特作为节点。如果用户A关注了用户B,就创建用户间的连接。如果用户发送或转发一条推特,则创建用户和推特之间的连接。
  • 推荐引擎

编码

此练习会使用Facebook数据。这里有facebook用户之间的连接/链接文件。首先这样创建Facebook图形:

  1. # reading the datasetfb = nx.read_edgelist('../input/facebook-combined.txt', create_using = nx.Graph(), nodetype = int) 

它是这样运作的:

  1. pos = nx.spring_layout(fb)import warnings 
  2. warnings.filterwarnings('ignore')plt.style.use('fivethirtyeight') 
  3. plt.rcParams['figure.figsize'] = (20, 15) 
  4. plt.axis('off') 
  5. nx.draw_networkx(fb, pos, with_labels = False, node_size = 35) 
  6. plt.show() 
大势所趋!数据科学家必知的5种图算法

FB用户图

现在要找到影响力高的用户。

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读