加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 经验 > 正文

PageRank、最小生成树:ML开发者应该了解的五种图算法

发布时间:2019-09-10 15:32:56 所属栏目:经验 来源:佚名
导读:副标题#e# 在互联世界中,用户不能被视为独立的实体。他们之间存在一定的关系,我们有时希望在构建机器学习模型时考虑到这些关系。 在关系数据库中,我们无法在不同的行(用户)之间利用这种关系,但在图数据库中,这样做非常简单。 在这篇文章中,我们将讨

假设你有沃尔玛商店中各个过道位置和过道之间距离的数据。您希望为从 A 到 D 的顾客提供最短路径。

PageRank、最小生成树:ML开发者应该了解的五种图算法

你已经看到 LinkedIn 显示一级连接和二级连接的方式。而这背后的机制是什么呢?

PageRank、最小生成树:ML开发者应该了解的五种图算法

代码

  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']}) 
  5. ('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']}) 
  6. .... 

最小生成树(Minimum Spanning Tree,MST)

现在我们面临另一个问题。假设我们在水管铺设公司或电线公司工作。我们需要使用最少的电线/管道来连接图中所有城市。我们如何做到这一点?

PageRank、最小生成树:ML开发者应该了解的五种图算法

左: 无向图; 右: 对应 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)) 

PageRank、最小生成树:ML开发者应该了解的五种图算法

左: 无向图; 右: 对应 MST.

Pagerank

PageRank、最小生成树:ML开发者应该了解的五种图算法

上图为谷歌提供长期支持的页面排序算法(page sorting algorithm)。它根据输入和输出链接的数量和质量为页面打分。

应用

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读