今天的网络是我们日常生活的一部分。 让我们学习如何使用网络在Python中可视化和理解社交网络

网络无处不在,道路网络,社交媒体上的朋友和关注者网络以及办公室同事网络。 他们在日常生活中发挥着重要作用,从传播有用信息到影响全国选举。 分析这些网络并根据这些网络做出明智决策的能力是一项对任何数据分析师都很重要的技能。

介绍

首先让我们从社交网络的含义开始。 下面你会看到一个宝莱坞演员网络作为节点。 如果他们在至少一部电影中合作,他们就会用实线连接。所以,我们可以看到Amitabh Bachchan和Abhishek Bachchan都与网络中的所有演员合作,而Akshay Kumar只与两个Bachchans合作。 这也是一个社交网络。 任何具有个人之间联系的网络,其中连接捕获它们之间的关系是社交网络。 分析这些网络可以让我们深入了解网络中的人,比如谁是真正的影响者,谁是最相关的,等等。

每个网络包括:

节点:我们正在建立网络的个人。 上例中的演员。

边缘:节点之间的连接。 它表示网络节点之间的关系。 在我们的例子中,关系是演员们一起工作。

使用NetworkX创建网络

有许多类型的网络。 我们将使用NetworkX开发和分析这些不同的网络。 首先,您需要安装networkX:您可以使用以下任一方法:

pip install networkx

或者如果在Anaconda工作

conda install -c anaconda networkx

这将安装最新版本的networkx。 本教程中的代码是在Python = 3.5,NetworkX = 2.0版本上完成的。

对称网络

我们在上面创建的第一个演员网络是对称网络,因为“在电影中一起工作”的关系是对称关系。 如果A与B相关,则B也与A相关。让我们创建上面在NetworkX中看到的网络。我们将使用Graph()方法创建新网络,并使用add_edge()在两个节点之间添加边。

# -*- coding: utf-8 -*-

"""

Created on Wed Oct 3 15:43:18 2018

@author: Zihao Chen

"""

% reset -f

% clear

# In[*]

import networkx as nx

G_symmetric = nx.Graph()

G_symmetric.add_edge('Amitabh Bachchan','Abhishek Bachchan')

G_symmetric.add_edge('Amitabh Bachchan','Aamir Khan')

G_symmetric.add_edge('Amitabh Bachchan','Akshay Kumar')

G_symmetric.add_edge('Amitabh Bachchan','Dev Anand')

G_symmetric.add_edge('Abhishek Bachchan','Aamir Khan')

G_symmetric.add_edge('Abhishek Bachchan','Akshay Kumar')

G_symmetric.add_edge('Abhishek Bachchan','Dev Anand')

G_symmetric.add_edge('Dev Anand','Aamir Khan')

不对称网络

如果节点之间的关系是'孩子',那么关系就不再是对称的。 如果A是B的子节点,则B不是A的子节点。这种关系不对称的网络(A与B相关,并不一定意味着B与A相关联)被称为非对称网络。 我们可以使用DiGraph方法在NetworkX中构建非对称网络,该方法缺少方向图。 让我们制作一个非对称图。

# In[*]

% reset -f

% clear

import networkx as nx

# In[*]

G_asymmetric = nx.DiGraph()

G_asymmetric.add_edge('A','B')

G_asymmetric.add_edge('A','D')

G_asymmetric.add_edge('C','A')

G_asymmetric.add_edge('D','E')

# In[*]

nx.spring_layout(G_asymmetric)

nx.draw_networkx(G_asymmetric)

加权网络

到目前为止,我们的网络没有权重,但网络可能是用权重制作的,例如,如果在我们的初始网络中我们将一起完成的电影数量视为权重,我们将获得一个加权网络。 让我们再次演绎演员,但这次我们为网络增加了重量,每个边缘都有一个重量,表示他们一起完成的电影数量。

# In[*]

% reset -f

% clear

# In[*]

import networkx as nx

G_weighted = nx.Graph()

G_weighted.add_edge('Amitabh Bachchan','Abhishek Bachchan', weight=25)

G_weighted.add_edge('Amitabh Bachchan','Aaamir Khan', weight=8)

G_weighted.add_edge('Amitabh Bachchan','Akshay Kumar', weight=11)

G_weighted.add_edge('Amitabh Bachchan','Dev Anand', weight=1)

G_weighted.add_edge('Abhishek Bachchan','Aaamir Khan', weight=4)

G_weighted.add_edge('Abhishek Bachchan','Akshay Kumar',weight=7)

G_weighted.add_edge('Abhishek Bachchan','Dev Anand', weight=1)

G_weighted.add_edge('Dev Anand','Aaamir Khan',weight=1)

nx.spring_layout(G_weighted)

nx.draw_networkx(G_weighted)

degree

节点的度数定义节点具有的连接数。 NetworkX具有可用于确定网络中节点程度的功能度。

nx.degree(G_symmetric,'Dev Anand`)

这将返回值3,因为Dev Anand仅与网络中的三个角色合作。

聚类系数

据观察,在社交网络中共享联系的人倾向于形成关联。换句话说,社交网络中存在形成集群的趋势。我们可以确定节点的集群,Local Clustering Coefficient,它是节点的朋友(即连接)彼此连接的对的一部分。为了确定局部聚类系数,我们使用nx.clustering(Graph,Node)函数。

# In[*]

nx.clustering(G_symmetric, 'Dev Anand')

nx.clustering(G_symmetric,'Abhishek Bachchan')

nx.average_clustering(G_symmetric)

在对称Actor网络中,您会发现Dev Anand的局部聚类系数为1,而Abhishek Bachchan的局部聚类系数为0.67。

对称Actor网络的平均聚类系数(所有局部聚类系数之和除以节点数)为0.867。

距离

我们还可以分别使用nx.shortest_path(Graph,Node1,Node2)和nx.shortest_path_length(Graph,Node1,Node2)函数确定NetworkX中两个节点之间的最短路径及其长度。

nx.shortest_path(G_symmetric, 'Dev Anand', 'Akshay Kumar')

['Dev Anand','Amitabh Bachchan','Akshay Kumar']

我们可以使用广度优先搜索算法从该节点开始,找到节点与网络中每个其他节点的距离。 networkX提供了bfs_tree函数来完成它。因此,如果您尝试T = nx.bfs_tree(G_symmetric,'Dev Anand')并现在绘制此树,我们将获得一个网络结构,告诉我们如何从Dev Anand开始到达网络的其他节点

# In[*]

T = nx.bfs_tree(G_symmetric, 'Dev Anand')

nx.draw_networkx(T)

偏心率

节点A的偏心率被定义为A和所有其他节点之间的最大距离。 可以使用nx.eccentricity()函数找到它。 在对称的Actor网络中,Dev Anand的偏心率为2,而Abhishek Bachchan的偏心率为1(它与所有人相连)。

python做社会网络分析_社交网络分析(Social Network Analysis in Python)①相关推荐

  1. python做毕业设计选题_软妹子的毕业设计:用Python制作防盗门系统!

    原标题:软妹子的毕业设计:用Python制作防盗门系统! 源 /PythonerCN文 /木易小光 背景 毕业季又要到了,而这次我加入了毕业季的大军,在外面租了房子.但是不知道为什么,每天上班我都会担 ...

  2. python做数据处理软件_程序员用于机器学习编程的Python 数据处理库 pandas 入门教程...

    入门介绍 pandas适合于许多不同类型的数据,包括: · 具有异构类型列的表格数据,例如SQL表格或Excel数据 · 有序和无序(不一定是固定频率)时间序列数据. · 具有行列标签的任意矩阵数据( ...

  3. Complex Network Analysis in Python学习笔记

    Complex Network Analysis in Python简介:https://www.oreilly.com/library/view/complex-network-analysis/9 ...

  4. Social Network Analysis的Centrality总结,以及networkx实现EigenCentrality,PageRank和KatzCentrality的对比...

    本文主要总结近期学习的Social Network Analysis(SNA)中的各种Centrality度量,我暂且翻译为中心度.本文主要是实战,理论方面几乎没有,因为对于庞大的SNA,我可能连门都 ...

  5. [yzhpdh多读paper]Social network analysis:An overview

    以下为本人在阅读文章中记录的对自身有启发的内容,按照文章发表的顺序记录 Social network analysis也叫SNA,它提出的目的是研究社会角色在社交网络中交互的形式,所以其强调的是关系而 ...

  6. python做excel麻烦_高效办公必备:别人通宵做的 Excel,我用Python 半小时搞定!

    原标题:高效办公必备:别人通宵做的 Excel,我用Python 半小时搞定! 最近经常听到周围的人抱怨:"工作忙,在加班--" 不知不觉,当代职场人早就被"996&qu ...

  7. 用python做自我介绍_用python做个自我介绍(python入门教程)_逻辑教育

    原标题:用python做个自我介绍(python入门教程)_逻辑教育 本文涉及的python基础语法为:数据类型等 数字类型 1. 字符串的拼接 我们在上一章中已经简单介绍了一下字符串的创建方式,这里 ...

  8. python做数学计算器_从零开始学习PYTHON3讲义(二)把Python当做计算器

    <从零开始PYTHON3>第二讲 上一讲我们说过了如何启动Python IDLE集成开发学习环境,macOS/Linux都可以在命令行执行idle3.Windows则从开始菜单中去寻找ID ...

  9. 一步一步教你如何用python做词云_一步一步教你如何用Python做词云

    前言 在大数据时代,你竟然会在网上看到的词云,例如这样的. 看到之后你是什么感觉?想不想自己做一个? 如果你的答案是正确的,那就不要拖延了,现在我们就开始,做一个词云分析图,Python是一个当下很流 ...

最新文章

  1. Python裁剪图片(Crop an Image)
  2. Java Annotation的RetentionPolicy介绍
  3. 简化软件产品的实际步骤
  4. Java设计模式-状态模式(State)
  5. 蔡骏:17年前,我也只是个做着无聊工作的小青年
  6. skala view android,Skala Preview for mac
  7. SQL SERVER 2014 安装图解(含 SQL SERVER 2014 安装程序共享)
  8. 妙用PRN文件,实现文档换机打印
  9. matlab显示 图注,Matlab图例注记乱码(2019a)
  10. 输入卡号生成银行卡图片python_python 模拟贷个卡号生成规则过程解析
  11. java delphi aes加密算法_谁有C#与delphi通用的AES加密算法
  12. JSP 银行网上账户管理系统myeclipse编程java网页
  13. Python 3 《dictionary》入门练习
  14. java魔法师_RxJava魔法师
  15. 冷门高性价比蓝牙耳机,不是烧友一定很少知道的五大蓝牙耳机品牌
  16. 《如何获得真正的财富》精髓:选择比努力更重要,对于个人来说,选择了对的城市和对的行业,人生就成功了大半,对于企业来说,用最少的广告投入获得品牌知名度是获得财富的关键。
  17. 【报告分享】快消行业巨量引擎营销攻略-群邑GroupM巨量引擎(附下载)
  18. d3.js——多柱体柱状图(v5)
  19. java四叶玫瑰_[转载]java编程——四叶玫瑰线
  20. HTML5中背景图片如何设置

热门文章

  1. JavaScript 弱类型
  2. 4月份不良与垃圾信息举报:垃圾邮件占37.4%
  3. 【iOS-cocos2d-X 游戏开发之十一】使用New CCSprite() CCUserDefault要注意!
  4. 铁血规则:事件预订与取消预订[转]
  5. AI算法工程师必备技术,快快积累!
  6. 无插件web直播解决方案,ffmpeg+nginx-http-flv-module+flv.js
  7. 基于NVIDIA显卡的硬编解码的一点心得 (完结)
  8. activiti 工作流_springboot+activiti+angular 集成activiti工作流实现,源码分享
  9. 64 os 驱动签名
  10. [LeetCode]k个一组翻转链表(Reverse Nodes in k-Group)