首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Neo4j与Python结合,实现网页排名算法与最小社区探测

之前发过一篇文章,python下的社交网络分析,但如果是只用Python的话,其实是不好用的。今天这篇文章,主要介绍下Neo4j与Python结合,是可以实现网页排名算法与最小社区探测的。

数据:用之前文章的 天龙八部 数据即可

===========================分割线===========================

首先loadcsv导入Neo4j中,

概览下:

图很大,我们先看下网络直径:网络直径的定义是最长的最短路径

好吧,最长是6,还记得6度人脉吗?

回顾下,我们看下 Catelyn与Drogo的最短路径:

也许最短路径不止一条,我们看下这俩人之间所有的最短路径:

看看关键节点的概念:如果节点位于网络中的其它两个节点之间的所有最短路径之中,那么该节点被认为是关键的

这里计算10个网络中的关键节点:

Python中上次告诉了大家怎么计算度中心性,Neo4j也可以:

关系是有权重的,那么在度中心性的基础上,我们计算下加权度中心性:

再计算下中介中心性。什么是中介中心性呢?其实就是识别连接不同集群的节点,中介中心性越高,这个节点越是连接不同集群的。不过计算中介中心性,需要在Neo4j中安装APOC插件。

再计算下接近中心性。类似于中介中心性,这是用来识别集群内部被高度连接的节点。

再看一下网页排名:网页排名算法和下面要说的最小社区探测,以及上面的各项中心性,在Python中都可以实现,但是没有数据库中实现方便、快捷、容易管理。

Neo4j中好像没有直接计算网页排名的插件,我们在Python中计算,添加到Neo4j中。有大神是用Python igraph包:pip install python-igraph,然后

但是我总安装不上,所以用了py2neo和networkx。

先把数据从Neo4j中导入到Python中:

在Python中计算网页排名:

然后把网页排名数据添加到Node节点属性中:

然后导入到Neo4j中

然后我们在Neo4j中看网页排名属性值:

网页排名越大,这个客户坏账的可能性越高。

最后看下社区最小社区探测,选择最小社区节点5,创建了6个社区,Python中计算,导入的Neo4j中。

我们看下社区是1的节点:

创建网页排名、社区后的节点其实可以再可视化一下,但是华而不实,这里就不做了。

这是1个例子,抛砖引玉吧,希望与大家共同交流。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180117G0C83M00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券