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

全文共7889字,预计学习时长16分钟

在万物相连的世界里,用户并不是独立的个体,彼此之间都有某种联系。构建机器学习模型时,有时也会将这种联系放入模型中。

虽然关系数据库中无法在不同数行(用户)间使用这种关系,但在图数据库里,这样做非常简单。

本文将介绍一些数据科学家必知的重要的图算法,并阐释如何用Python来使用它们。

另外,强烈推荐先学习图理论基础。

圣地亚哥大学发布于Coursera上的大数据课程的图分析课:https://www.coursera.org/learn/big-data-graph-analytics?ranMID=40328&ranEAID=lVarvwc5BD0&ranSiteID=lVarvwc5BD0-uD3tAFL0mCUdzcfwDd6FTQ&siteID=lVarvwc5BD0-uD3tAFL0mCUdzcfwDd6FTQ&utm_content=2&utm_medium=partners&utm_source=linkshare&utm_campaign=lVarvwc5BD0

1. 连通分支

包含3个连接组件的图

大家都知道聚类算法如何工作吧?

简单地说,就是将连通分支看作一种硬聚类算法,让它在相关/相连数据中找到聚类/岛。

举个具体的例子:假设有一份连接世界上任意两个城市的道路数据,而你需要借此找到世界上所有大洲和所包含的城市。

这要如何实现呢?开动脑筋吧。

此处使用的连通分支算法是基于BFS/DFS的特殊情况,此处不多赘述。以下会解释如何使用Networkx启动和运行代码。

应用

从零售的角度来看:假设有很多客户使用很多的帐户,连通分支算法可用于在数据集中找出不同的家庭。

根据相同的信用卡使用情况、相同的地址或相同的电话号码等,可以假定客户ID之间的联系(路)。一旦有了这些联系,就可以对其运行连通分支算法来创建单独的集群,然后为其分配一个家庭ID。

接着就可以使用这些家庭ID根据家庭需求提供个性化推荐。还可以用它来创建基于家族的分组特性,从而不断完善分类算法。

从金融角度来看:这些家庭ID还能用来捕获欺诈。如果某个账户有过欺诈行为,关联账户也很可能实施欺诈。

应用的无限可能性全凭你的想象定夺。

编码

此处将使用Python中的Networkx模块来创建和分析图表。

先看一个会用到的示例图,其中包含城市和城市之间的距离信息。

随机距离示意图

首先,创建联系列表和作为联系权重的距离列表:

edgelist = [['Mannheim', 'Frankfurt', 85], ['Mannheim', 'Karlsruhe',
 80], ['Erfurt', 'Wurzburg', 186], ['Munchen', 'Numberg', 167],
 ['Munchen', 'Augsburg', 84], ['Munchen', 'Kassel', 502], ['Numberg',
 'Stuttgart', 183], ['Numberg', 'Wurzburg', 103], ['Numberg', 'Munchen',
 167], ['Stuttgart', 'Numberg', 183], ['Augsburg', 'Munchen', 84],
 ['Augsburg', 'Karlsruhe', 250], ['Kassel', 'Munchen', 502], ['Kassel',
 'Frankfurt', 173], ['Frankfurt', 'Mannheim', 85], ['Frankfurt', 
'Wurzburg', 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值