Neo4j与Python结合,实现网页排名算法与最小社区探测
作者:zhaikun 风控建模屌丝一枚,现居于北京
个人微信公众号:Python数据分析与评分卡建模
前文链接:带你走进图数据库——Neo4j的大门
之前发过一篇文章,Python下的社交网络分析,从天龙八部小说衍生出的google语义分析与gephi社交网络,但如果是只用Python的话,其实是不好用的。今天这篇文章,主要介绍下Neo4j与Python结合,是可以实现网页排名算法与最小社区探测的。
数据获取:关注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个例子,抛砖引玉吧,希望与大家共同交流。
Python爱好者社区历史文章大合集:
Python爱好者社区历史文章列表(每周append更新一次)
关注后在公众号内回复“课程”即可获取:
小编的Python入门视频课程!!!
崔老师爬虫实战案例免费学习视频。
丘老师数据科学入门指导免费学习视频。
陈老师数据分析报告制作免费学习视频。
玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。
丘老师Python网络爬虫实战免费学习视频。