#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

社交网络分析--python-igraph相关推荐

  1. python用社交网络分析_Python社交媒体情感分析入门

    python用社交网络分析 自然语言处理(NLP)是一种机器学习,可解决口语/书面语言与这些语言的计算机辅助分析之间的相关性. 从写作帮助和建议到实时语音翻译和口译,我们在日常生活中经历了NLP的众多 ...

  2. 社交网络分析与反欺诈

    一.总体概述 目前针对图网络结构,比较热门的一个部分就是知识图谱,知识图谱是基于二元关系知识库,构成网络结构,基本组成单位是"实体-关系-实体"的三元组,实体之间通过关系相互联结. ...

  3. Social Network 社交网络分析

    Social Network 社交网络分析 一:什么是SNA-社交网络分析 社交网络分析的威力何在?我想几个案例来说明. 案例1:对一个毫无了解的组织(这个组织可以是一个公司,亦或是一个组织),如果能 ...

  4. 关于R语言和社交网络分析的几篇文章

    [转载]初学社交网络分析-<庶民的微胜利:R与社交网络分析> 关键词:igraph 图表输出 图形优化 初次尝试igraph包 igraph包入门 R语言画社交关系图 根据用户分享的歌曲, ...

  5. 疯狂吸金1600个亿的拼多多,社交网络分析到底隐藏多少财富?

    2018年7月26日,拼多多在美国上市了,市值1600亿人民币. 拼多多创始人黄峥 原本众多人都不喜爱的拼多多,也不愿使用的拼多多,就这样成功上市,成为了市值千亿的互联网企业.创始人黄峥也创造了一个奇 ...

  6. 别说我懂社交网络: 关于社交网络分析的一头雾水

    社交网络,对每一个人是熟悉而又陌生的.每一个人都能够说出个一二三,由于人是社会的动物.每一个人都有自己的社交圈子即社交网络.然而,就社交网络的应用开发尤其是移动互联网社交应用而言,虽然创业团队不停地涌 ...

  7. 【2017年第2期】社交网络分析在公共安全领域的应用

    邵蓥侠, 冯是聪 北京明略软件系统有限公司,北京 102218 摘要:社交网络分析技术是一种通用有效的研究社会人员之间复杂关系模式的方法.以公安领域为背景,首先介绍了社交网络分析理论,然后详细阐述该技 ...

  8. 社交网络分析的 R 基础:(三)向量、矩阵与列表

    在第二章介绍了 R 语言中的基本数据类型,本章会将其组装起来,构成特殊的数据结构,即向量.矩阵与列表.这些数据结构在社交网络分析中极其重要,本质上对图的分析,就是对邻接矩阵的分析,而矩阵又是由若干个向 ...

  9. 社交网络分析:网络中心性

    原文地址:社交网络分析:网络中心性作者:酸嘢 本文为Social Network Analysis学习笔记,课程地址为https://www.coursera.org/course/sna. 对于中心 ...

最新文章

  1. “去哪儿网”2015春招前端面试题
  2. jQuery - 设置内容和属性
  3. “毕业1年,做Python挣了50W!”网友:吹得太少..
  4. ACM-ICPC 2018 徐州赛区网络预赛G (单调队列)
  5. 理解思科IPS系统的traffic flow notifications
  6. Lua笔记3 函数和数组
  7. 应用悄悄拿走你的隐私做了什么?只需30秒这个AI给你答案
  8. 一次性搞懂JavaScript 执行机制
  9. [jQuery]计算年龄
  10. [LeetCode][easy]Roman to Integer
  11. 关于 XcodeGhost , 如何进行保护APP安全性
  12. 72个炫酷的CSS技巧
  13. 找茬游戏html5源码,大家来找茬游戏以JS实现
  14. 【视觉-单目三维重建-理论篇】单目视觉三维重建----论文调研1
  15. java写一个结婚的方法_一份结婚流程 作为你结婚的Project管理不错哦
  16. <A Tale of Evil Twins: Adversarial Inputs versus Poisoned Models>阅读笔记
  17. 阿里巴巴集团--软件测试--《社招、校招jd、公司具体介绍,校园招聘公告,应届生招聘流程,技术培训,薪资福利》整理
  18. Oracle中的CHR()函数
  19. 让你的 Ubuntu 看上去更像 MacOS
  20. flutter 旧有V1项目升级V2

热门文章

  1. 关于 vue 数据请求 本地跨域 和 线上请求的 ip地址 切换 问题
  2. android百度地图定位到非洲,解决办法
  3. 校园二手交易平台课程设计正文
  4. 前端经典面试题(有答案)
  5. 汽车电子常见脉冲实验简介
  6. 网站移动端APP渗透测试安全检测方案
  7. 建筑工程质量竣工资料软件
  8. Android Camera 三 CameraService 和 Client 链接到 HAL
  9. 文本分类算法TextCNN
  10. DIY TCP/IP IP模块和ICMP模块的实现1