社交网络分析--python-igraph

article/2025/11/7 18:15:07
#coding:utf-8
import scrapy
import xlwt, lxml
import re, json
import matplotlib.pyplot as plt
import numpy as np
import pylab
from scipy import linalg
#文档:igraph.org/python/doc/
#社交网络分析
#from igraph import *
'''
社交网络算法介绍
分析-权利的游戏-网络(Jupyter Notebook)
社交网络算法在金融反欺诈中的应用社交网络算法应用场景:在社交网络中社区圈子的识别(Community Detection)Facebook/Wechat是基于朋友之间的强关系网络,有助于朋友之间的联系与关系维系Twitter/Weibo/Douban是基于单向关注的弱关系社交网络,有助于消息的传播和塑造意见领袖Linkedin是面向工作的职业社交网络,帮助商务交流与求职招聘基于好友关系为用户推荐商品或内容社交网络中人物影响力的计算信息在社交网络上的传播模型虚假信息和机器人账号的识别基于社交网络信息对股市、大选的预测互联网金融行业中的反欺诈预测
'''
# g=Graph([(0,1),(0,2),(2,3),(3,4),(4,2),(2,5),(5,0),(6,3),(5,6)])
# summary(g)
# print(g)
# print(g.degree())
'''
degree#二分图(Bipatite):有两类节点,同一类内部各节点之间没有关联关系,不同类节点之间互相关联
Multigraph
http://snap.stanford.edu/data/
http://www-personal.umich.edu/~mejn/netdata
社交网络算法-分析指标
一个具体的网络可抽象为一个由节点(vertex或node)集合V和边(edge)集合E组成的图G=(V,E),节点数记为n=|V|,边数记为m=|E|衡量指标:度,密度,团,度中心性,紧密中心性,介数中心性,聚集系数
团:各节点之间有相互联系
互联网特性:small world/power law/Community
'''#度
import csv
edges=[]
with open('C://Users/SunChao/Desktop/igraph/net.data','r') as f:for row in csv.reader(f.read().splitlines()):u,v=[i for i in row]edges.append((u,v))
from igraph import Graph as IG
g=IG.TupleList(edges,directed=False,vertex_name_attr='name',edge_attrs=None,weights=False)
print(g)
# for p in g.vs:
#     print(p['name'],p.degree())
'''#紧密中心性:某个节点到达其他节点的难易程度,也就是其他所有节点距离的平均值的倒数
paths=g.get_all_shortest_paths('7')#g.vs把整个图中的节点作为一个列表,对应有参数name
names=g.vs['name']
cc=0
for p in paths:print([names[x] for x in p])cc+=len(p)-1
print('closeness centrality=%s'%((len(paths)-1)/cc))ccvs=[]
for p in zip(g.vs,g.closeness()):ccvs.append({'name':p[0]['name'],'cc':p[1]})
pgvs=sorted(ccvs,key=lambda k:k['cc'],reverse=True)[:10]
print(pgvs)
''''''
#介数中心性#计算每对节点(i,j)之间的最短路径,当然需要得到具体路径#对各个节点判断该节点是否在最短路径上#最后将刚刚的判断进行累加得到从i到j的最短路径经过该点的数量
#点介数
sp=[]
target=7
for v in g.vs:# print(v,v['name'])paths=g.get_all_shortest_paths(v['name'])for p in paths:if(target in p and target !=p[0] and target !=p[-1]):print(target,p)sp.append(p)spbt=0
tu=[]
#去重,i到j和j到i为同一条路径
for x in sp:if (set((x[0],x[-1]))) not in tu:tu.append(set((x[0],x[-1])))spbt+=1
print(tu)
print('betweenness=%s'%spbt)
#--------------------------
btvs=[]
for p in zip(g.vs,g.betweenness()):btvs.append({'name':p[0]['name'],'bt':p[1]})
pgvs=sorted(btvs,key=lambda k:k['bt'],reverse=True)
print(pgvs)
''''''
#PageRank算法# 思想:被大量高质量网页引用(链接)的网页也是高质量网页# A邻接矩阵*迭代时的节点权重B的转置
pg=g.pagerank()
pgvs=[]
for p in zip(g.vs,pg):pgvs.append({'name':p[0]['name'],'pg':p[1]})
pgvs1=sorted(pgvs,key=lambda k:k['pg'],reverse=True)
print(pgvs1)
'''
'''
#社团发现算法
什么是Community Structure同一社区内的节点与节点之间的连接很紧密,而社区与社区之间的连接比较稀疏设图G=G(V,E).所谓社团发现是指在图G中确定nc(>=1)个社区C={C1,C2,...,Cnc},
使得各社区的顶点集合构成V的一个覆盖若任意两个社区的顶点集合的交集均为空,则C称为非重叠社区(disjoint communities);否则称为重叠社区(overlapping communities)GN算法边介数:网络中经过每条边的最短路径的数目。GN:计算网络中所有边的介数找到介数最高的边并将它从网络中删除重复,直到每个节点就是一个社团为止'''
# btes=[]
# for p in zip(g.es,g.edge_betweenness()):
#     e=p[0].tuple
#     print((e[0]))
#     btes.append({'edge':(e[0],e[1]),'ebt':p[1]})
# es=sorted(btes,key=lambda k:k['ebt'],reverse=True)
# print(es)commnities=g.community_edge_betweenness(directed=False,weights=None)
print(commnities)
print(g.vs['name'])#社区评价指标-模块度Modularity
#网络如果有社区结构的话,网络中两个节点间有边的概率要高于随机图中两个节点间有边的概率
#对于随机图,模块度Q=0,对于一般图 模块度在0.3-0.7之间# 社区评价指标-Conductance阻断率
# 其值越小表明社区属性越明显
# outgoing edges/edges within#Louvain算法 通过计算模块度增量,将高的并到初始社区中
# o(n^3)->o(n^2logn)#LPA算法 --o(n)
#优点:不需要预先知识,不用预先给定社区的数量,可以控制迭代的次数来划分节点类别# 可扩展性强,时间复杂度接近线性,适合处理大规模复杂网络
#  思想:
#     1.初始化每个节点,给其唯一标签
#     2.根据邻居节点最常见的标签更新每个节点的标签
#     3.最终收敛后标签一致的节点属于一个社区# SLPA算法

# 安装python-igraph出错问题:
#     Failed building wheel for python-igraph
#     原因是 pip install -U python-igraph官方未找到对应安装包
#     建议从第三方下载对应版本的.whl本地安装
#     可通过以下链接:http://www.lfd.uci.edu/~gohlke/pythonlibs/
#  下载后放到指定路径下(如,本人使用anaconda 创建的python35虚拟环境,打开Anaconda prompt后activate激活 显示(python35) C:\Windows\system32 则应将文件放至该目录下)
# 另外,亦可通过上述方式下载并安装pycairo库
 #conda install -c marufr python-igraph=0.7.1.post6

 

 

 


http://chatgpt.dhexx.cn/article/kGrRUFV2.shtml

相关文章

(一文读懂社交网络分析(附应用、前沿、学习资源)学习笔记)

一文读懂社交网络分析(附应用、前沿、学习资源)学习笔记 一、社交网络的结构特性与演化机理1、社交网络结构分析与建模1.1 统计特性1.2 网络特性1.3 网络模型 2、虚拟社区以及发现技术2.1 定义2.2 社区发现算法评估指标2.3社区静态发现算法2.4 社区动态发…

推荐系统实践读书笔记-06利用社交网络数据

推荐系统实践读书笔记-06利用社交网络数据 自从搜索引擎谷歌诞生后,大家都在讨论互联网的下一个金矿是什么。现在,几乎所有的人都认为那就是社交网络。根据尼尔森2010年的报告,用户在互联网上22%的时间花费在社交网站和社交媒体上。Facebook…

超级干货 :一文读懂社交网络分析(附应用、前沿、学习资源)

转自:http://op.inews.qq.com/m/20171020B02CN500?refer100000355&chl_codekb_news_tech&h0 本文主要阐述: 社交网络的结构特性与演化机理 社交网络群体行为形成与互动规律 社交网络信息传播与演化机理 社交网络分析的应用 社交网络前沿研…

社交网络分析调研上

//2019年08月15日 文章来源:https://mp.weixin.qq.com/s/39_r3idlE3plqJwlhrvpAQ 一、相关概述 1、定义:“由许多节点构成的一种社会结构,节点通常是指个人或者组织,而社交网络代表着各种社会关系。” *在之前是社会学和人类学的…

社交网络影响力最大化

目录 1、社交网络概述 2、影响力最大化问题分类 3、社交网络影响力最大化作用 4、传播模型 4.1独立级联模型(Independent Cascade Model)简称 IC 模型 4.2线性阈值模型(Linear Threshold Model)简称LT模型 社交网络影响力最…

基于hadoop的社交网络三角形计数

图的三角形计数问题是一个基本的图计算问题,是很多复杂网络分析(比如社交网络分析) 的基础。目前图的三角形计数问题已经成为了 Spark 系统中 GraphX 图计算库所提供的一个算法级 API。本次实验任务就是要在 Hadoop 系统上实现 Twitter 社交网络图的三角形计数任务。 1.1 …

PageRank算法在社交网络上的应用

PageRank算法介绍 pagerank算法的核心思想是,计算一个用户随机点击一个网站然后不停点击从而到达各个网站的概率。而一个网站的打开概率又取决于那些指向他自己的那些网站的概率,所以这个概率的计算是一个不断迭代的过程。 一个简单的例子:…

社交网络与社会计算课程内容梳理总结

目录 1 引言2 复杂网络的图要素3 复杂网络度量4 复杂网络模型5 网络表示学习6 主题模型 1 引言 社会计算是指社会科学和计算技术交叉融合而成的一个研究领域,研究如何利用计算系统帮助人们进行沟通与协作,研究如何利用计算技术分析社会运行的规律与发展…

图论与复杂网络建模工具Networkx的四种网络模型

Networkx的四种网络模型 一. Networkx的下载安装二. 规则图三、ER随机图四、WS小世界网络五、BA无标度网络六. 总结 NetworkX提供了4种常见网络的建模方法,分别是:规则图,ER随机图,WS小世界网络和BA无标度网络。 一. Networkx的下…

社交网络分析算法应用,社交网络分析算法

社交网络的起源,发展历程及未来的发展趋势。越详细越好啊,多谢了各位 社交网络的起源六度分割原理及社交网络的兴起与发展有一个数学领域的猜想,名为Six Degrees of Separation,中文翻译包括以下几种: 六度分割理论或…

PageRank与社交网络模型评估

 SNS社交网络在近几年流行起来,并呈现出火爆的增长趋势。在仿制国外Facebook、twitter等成功先例的基础上,国内的人人网、新浪微博等一系列社交网络正风生水起。  这些社交网站表面上看起来十分普通和其他网站别无二…

基于社交网络的推荐

论文题目:Graph Neural Networks for Social Recommendation 文章解决的challenge: 1.We propose a novel graph neural network GraphRec, which can model graph data in social recommendations coherently; 将用户与物品交互矩阵,用户与用…

社交网络分析之关系图(原理+Python代码)

数据来源于天池赛题:零基础入门数据分析-学术前沿趋势分析 地址:https://tianchi.aliyun.com/competition/entrance/531866/information 一、原理介绍 社交网络分析是图关系挖掘的一个分支,通常以关系图的形式来展示人与人之间的关系网络。…

python绘制社会关系网络图_python画社交网络图

在图书馆的检索系统中,关于图书的信息里面有一个是图书相关借阅关系图。跟这个社交网络图是一样的,反映了不同对象间的关联性。利用python画社交网络图使用的库是 networkx import networkx as nx import matplotlib.pyplot as plt G nx.Graph() G.…

《关于动态社交网络建模和分析的教程》的读书笔记

** 一、The French-DeGroot model ** 1.模型介绍 描述了一个有n个个体的团体的意见形成的离散时间过程。 模型: x(k1)Wx(k),k0,1…(2)(French提出) (3) 参数含义: x1、x2、…xn&am…

社交网络模型

社交网络模型 1.空手道俱乐部模型 1.1 模型概述 空手道俱乐部模型是以一个34人的团体构成的网络拓扑模型,由于俱乐部创始人与空手道教练就学员学费产生分歧,导致俱乐部形成以这两人为首的两个团体。 1.2 俱乐部裂变前的图形和矩阵表示 1.2.1 俱乐部…

社交网络分析——信息传播模型(附带三个模型的python实现)

摘要:主要讲解一些基本的信息传播模型,以及IC模型、SI模型和SIR模型的python实现及可视化。 2021.10.06更新有需要的可以点击传送门 2020.09.26更新更新了SIR模型的实现,请点击传送门,就不放在这篇博客里了 2020.09.03更新更新了S…

MOODLE安装

https://baijiahao.baidu.com/s?id1648898834478394333&wfrspider&forpc

Moodle 安装的时候提示 original IP

在安装 Moodle 的时候提示下面的错误,导致安装不能进行。 Installation must be finished from the original IP address, sorry 这是因为第一次安装的时候访问的 IP 地址与系统中记录的不一致。 你可以登录使用的数据库后运行下面的 SQL UPDATE mdl_user set la…

Wamp5与Moodle安装

最近在更改本科同学关于MOODLE平台的安装的实验报告的时候,发现他们大部分都是用easyphp安装的,他们在报告中体现出来一些的问题,如:日历产生乱码、安装不了中文版本、无法打开http://localhost/mysql/ 等问题,于是我…