上海易雅达网站建设公司怎么样,深圳国内网站建设,汽车网站建设需要多少钱,网站摇奖活动怎么做在本文中#xff0c;我将讨论一些你应该知道的最重要的图算法#xff0c;以及如何使用Python实现它们。作者#xff1a;AI公园导读因为图分析是数据科学家的未来。作为数据科学家#xff0c;我们对pandas、SQL或任何其他关系数据库非常熟悉。我们习惯于将用户的属性以列的形…在本文中我将讨论一些你应该知道的最重要的图算法以及如何使用Python实现它们。作者AI公园导读因为图分析是数据科学家的未来。作为数据科学家我们对pandas、SQL或任何其他关系数据库非常熟悉。我们习惯于将用户的属性以列的形式显示在行中。但现实世界真的是这样吗?在一个互联的世界里用户不能被视为独立的实体。它们之间有一定的关系我们在建立机器学习模型的时候有时也会考虑这些关系。现在虽然在关系数据库中我们不能在不同的行(用户)之间使用这样的关系但是在图形数据库中这样做非常简单。在本文中我将讨论一些你应该知道的最重要的图算法以及如何使用Python实现它们。1. 连通组件一个包含3个连通组件的图我们都知道聚类是如何工作的。你可以用外行人的术语来理解连通组件它是一种硬聚类算法可以在相关/连接的数据中找到聚类/岛屿举个具体的例子假设你有连接世界上任何两个城市的道路的数据。你需要找出世界上所有的大陆以及它们包含哪些城市你将如何实现这一点?来想想吧。我们使用的连通组件算法是基于BFS/DFS的特殊情况。我不会在这里过多地讨论它是如何工作的但是我们将看到如何使用Networkx编写和运行代码。应用从零售的角度来看假设我们有很多客户使用很多账户。使用连通组件算法的一种方法是在数据集中找出明显不同的家族。我们可以根据相同的信用卡使用情况、相同的地址或相同的移动电话号码等设定客户ID之间的边(路)。一旦我们有了这些连接我们就可以运行连通组件算法来创建单独的簇然后我们可以为其分配一个家族ID。然后我们可以使用这些家族ID根据家族需求提供个性化的推荐。我们还可以使用这个家族ID通过创建基于家族的分组特征来支持我们的分类算法。从财务的角度来看另一个用例是使用这些家族ID捕获欺诈。如果一个账户在过去有过欺诈行为关联账户很可能也容易进行欺诈。可能性只受你自己想象力的限制。代码我们将使用Python中的Networkx模块来创建和分析图。让我们从一个示例图开始我们使用它来实现我们的目的。包含城市和城市之间的距离信息。使用随机距离的图我们首先创建一个带有距离的边的列表我们把距离作为边的权重使用Networkx构建图现在我们想从这张图中找出不同的大陆及其包含的城市。我们现在可以使用连通组件算法做到这一点正如你所看到的我们能够在数据中找到不同的部分。只需要使用边和顶点。这个算法可以在不同的数据上运行以满足我上面提到的任何用例。2. 最短路径继续上面的例子我们得到了一个德国城市的图以及它们之间的距离。你想知道如何从法兰克福(起始节点)到慕尼黑的最短距离。我们用来解决这个问题的算法叫做Dijkstra。用Dijkstra自己的话来说从鹿特丹到[格罗宁根的最短路线是什么?一般来说最短路径的算法是这样的我花了大约20分钟来设计它。一天早上我在阿姆斯特丹和我的年轻的未婚妻购物累了我们坐在咖啡馆露台喝一杯咖啡我就在想我能不能想出这个最短路径算法然后我就想出来了。正如我所说这是一个20分钟的发明。事实上它是在1959年出版的。三年后还可以读到事实上它相当不错。它如此漂亮的原因之一是我不用铅笔和纸来设计它。后来我了解到不用铅笔和纸设计的好处之一是你几乎不得不避免所有可以避免的复杂性。最终令我大为惊讶的是这个算法成了我成名的基石之一。- Edsger Dijkstra在对Philip L. Frana的采访中应用Dijkstra算法的变体广泛应用于谷歌地图中用于寻找最短路径。你在沃尔玛你有不同的通道和所有通道之间的距离。你想要提供从A通道到D通道到客户的最短路径。你可以看到LinkedIn如何显示1级和2级的连接。幕后发生了什么?代码你也可以找到所有的地点对之间的最短路径3. 最小生成树现在我们有另一个问题。我们为一家水管铺设公司或互联网光纤公司工作。我们需要用最少的电线/管道连接图中所有的城市我们该怎么做?一个无向图右边是它的最小生成树应用最小生成树直接应用于网络设计包括计算机网络、电信网络、交通网络、供水网络和电网(它们最初是为这些网络而发明的)MST用于逼近旅行商问题聚类 — 首先构造MST然后使用簇间距离和簇内距离确定MST中某些边缘的分割阈值。图像分割 — 用于图像分割我们首先在一个图上构造一个MST其中像素是节点像素之间的距离基于一些相似性度量(颜色、强度等)。代码我们的图的最小生成树可以看到上面就是我们需要铺设的电线。4. Pagerank这就是长期以来支持谷歌的页面排序算法。它根据输入和输出链接的数量和质量为页面分配一个分数。应用Pagerank可以用于任何我们想要估计任何网络中节点重要性的地方。它被用来寻找最具影响力的论文使用引文。被谷歌用来排列页面它可以用来把tweets-用户和以及tweets-tweets当成节点进行排序。如果用户A关注了用户B那么创建用户之间的链接如果用户tweet/retwets一条tweet则创建用户和tweet之间的链接。推荐引擎代码在这个练习中我们将使用Facebook数据。我们有一个facebook用户之间的边/链接文件。我们首先创建FB图使用它是这样的FaceBook用户图现在我们想要找到具有高影响力的用户。直观地说Pagerank算法会给有很多朋友的用户打高分而这些朋友又有很多facebook上的朋友。我们可以用PageRank得到最有影响力的用户排序以上id适用于最有影响力的用户。我们可以看到最具影响力用户的子图最有影响力的用户(黄色)5. 中心度量有许多中心度量你都可以将其用作机器学习模型的特征。我将讨论其中的两个。内中心重要的不仅是拥有最多朋友的用户将一个地理位置与另一个地理位置连接起来的用户也很重要因为这让用户可以看到来自不同地理位置的内容。内中心度量了一个特定节点在另外两个节点之间的最短路径中出现的次数度中心它是节点的连接数。应用中心度量可以作为任何机器学习模型的一个特征。代码面的代码用于查找子图的内中心。可以看到在这里按它们的内中心值调整节点的大小。他们可以被认为是信息传递者。将具有高内中心的任何节点断开将会将图分成许多部分。总结在这篇文章中我讨论了一些最具影响力的图算法它们改变了我们的生活方式随着如此多的社会数据的出现网络分析可以在很大程度上帮助我们改进模型和产生价值。甚至更多地了解这个世界。