社交网络分析(Social Network Analysis in Python)①

简介: 今天的网络是我们日常生活的一部分。 让我们学习如何使用网络在Python中可视化和理解社交网络网络无处不在,道路网络,社交媒体上的朋友和关注者网络以及办公室同事网络。

今天的网络是我们日常生活的一部分。 让我们学习如何使用网络在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')
img_e65fa88c695b76516420a992eda4b4d2.png

不对称网络

如果节点之间的关系是'孩子',那么关系就不再是对称的。 如果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)
img_5c98be5f7643ac959fe844c7f25f20be.png

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

# 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)
img_4bbc0d4ad0e1f32f6a8d86e074840ee3.png

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)
img_8f4be95e23e93f30e10dfe1280e8a6d9.png

偏心率

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

目录
相关文章
|
1月前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品消费模式分析的深度学习模型
使用Python实现智能食品消费模式分析的深度学习模型
131 70
|
1月前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
285 55
|
5天前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python实现基于矩阵分解的长期事件(MFLEs)时间序列分析
在现代数据分析中,高维时间序列数据的处理和预测极具挑战性。基于矩阵分解的长期事件(MFLEs)分析技术应运而生,通过降维和时间序列特性结合,有效应对大规模数据。MFLE利用矩阵分解提取潜在特征,降低计算复杂度,过滤噪声,并发现主要模式。相比传统方法如ARIMA和深度学习模型如LSTM,MFLE在多变量处理、计算效率和可解释性上更具优势。通过合理应用MFLE,可在物联网、金融等领域获得良好分析效果。
22 0
使用Python实现基于矩阵分解的长期事件(MFLEs)时间序列分析
|
7天前
|
数据可视化 算法 数据挖掘
Python时间序列分析工具Aeon使用指南
**Aeon** 是一个遵循 scikit-learn API 风格的开源 Python 库,专注于时间序列处理。它提供了分类、回归、聚类、预测建模和数据预处理等功能模块,支持多种算法和自定义距离度量。Aeon 活跃开发并持续更新至2024年,与 pandas 1.4.0 版本兼容,内置可视化工具,适合数据探索和基础分析任务。尽管在高级功能和性能优化方面有提升空间,但其简洁的 API 和完整的基础功能使其成为时间序列分析的有效工具。
60 37
Python时间序列分析工具Aeon使用指南
|
3天前
|
机器学习/深度学习 运维 数据可视化
Python时间序列分析:使用TSFresh进行自动化特征提取
TSFresh 是一个专门用于时间序列数据特征自动提取的框架,支持分类、回归和异常检测等机器学习任务。它通过自动化特征工程流程,处理数百个统计特征(如均值、方差、自相关性等),并通过假设检验筛选显著特征,提升分析效率。TSFresh 支持单变量和多变量时间序列数据,能够与 scikit-learn 等库无缝集成,适用于大规模时间序列数据的特征提取与模型训练。其工作流程包括数据格式转换、特征提取和选择,并提供可视化工具帮助理解特征分布及与目标变量的关系。
34 16
Python时间序列分析:使用TSFresh进行自动化特征提取
|
1月前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品消费习惯分析的深度学习模型
使用Python实现智能食品消费习惯分析的深度学习模型
152 68
|
25天前
|
存储 安全 物联网
浅析Kismet:无线网络监测与分析工具
Kismet是一款开源的无线网络监测和入侵检测系统(IDS),支持Wi-Fi、Bluetooth、ZigBee等协议,具备被动监听、实时数据分析、地理定位等功能。广泛应用于安全审计、网络优化和频谱管理。本文介绍其安装配置、基本操作及高级应用技巧,帮助用户掌握这一强大的无线网络安全工具。
58 9
浅析Kismet:无线网络监测与分析工具
|
1月前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
188 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
2天前
|
数据采集 缓存 API
python爬取Boss直聘,分析北京招聘市场
本文介绍了如何使用Python爬虫技术从Boss直聘平台上获取深圳地区的招聘数据,并进行数据分析,以帮助求职者更好地了解市场动态和职位需求。
|
1月前
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费市场分析的深度学习模型
使用Python实现智能食品消费市场分析的深度学习模型
127 36