知识图谱如火如荼,首先推荐在python下进行社交网络分析networkx

建立图网络

无向图

import networkx as nx
G = nx.Graph()                                        #建立一个空的无向图G
G.add_node(1)                                        #添加一个节点1
G.add_edge(2,3)                                     #添加一条边2-3(隐含着添加了两个节点2、3)
G.add_edge(3,2)                                     #对于无向图,边3-2与边2-3被认为是一条边
print (G.nodes())                                       #输出全部的节点: [1, 2, 3]
print (G.edges())                                       #输出全部的边:[(2, 3)]
print (G.number_of_edges())                    #输出边的数量:1
[1, 2, 3]
[(2, 3)]
1

有向图

将G = nx.Graph() 改为 G = nx.DiGraph()即进行有向图,表示不同的边

import networkx as nx
G = nx.DiGraph()                                        #建立一个空的无向图G
G.add_node(1)                                        #添加一个节点1
G.add_edge(2,3)                                     #添加一条边2-3(隐含着添加了两个节点2、3)
G.add_edge(3,2)                                     #对于无向图,边3-2与边2-3被认为是一条边
print (G.nodes())                                       #输出全部的节点: [1, 2, 3]
print (G.edges())                                       #输出全部的边:[(2, 3), (3, 2)]
print (G.number_of_edges())                    #输出边的数量:[1, 2, 3]
[(2, 3), (3, 2)]
2

同时,有向图和无向图是可以相互转化的,分别用到Graph.to_undirected() 和 Graph.to_directed()两个方法。

带权图

有向图和无向图都可以给边赋予权重,用到的方法是add_weighted_edges_from,它接受1个或多个三元组[u,v,w]作为参数,其中u是起点,v是终点,w是权重。例如:

G.add_weighted_edges_from([(0,1,3.0),(1,2,7.5)])

添加0-1和1-2两条边,权重分别是3.0和7.5。

如果想读取权重,可以使用get_edge_data方法,它接受两个参数u和v,即边的起讫点。例如:

import networkx as nx
G = nx.DiGraph()
G.add_node(1)
G.add_edge(2,3)
G.add_edge(3,2)
G.add_weighted_edges_from([(0,1,3.0),(1,2,7.5)])
print (G.nodes())
print (G.edges())
print (G.number_of_edges())                    print (G.get_edge_data(1,2))

[1, 2, 3, 0]
[(1, 2), (2, 3), (3, 2), (0, 1)]
4
{‘weight’: 7.5}

NetworkX提供了常用的图论经典算法,例如DFS、BFS、最短路、最小生成树、最大流等等
#调用多源最短路径算法,计算图G所有节点间的最短路径

path=dict(nx.all_pairs_shortest_path(G))
print (path[0][2])

[0, 1, 2]

一个完整官方小案例

 import networkx as nxG = nx.Graph()
G.add_edge('A', 'B', weight=4)G.add_edge('B', 'D', weight=2)G.add_edge('A', 'C', weight=3)G.add_edge('C', 'D', weight=4)
nx.shortest_path(G, 'A', 'D', weight='weight')

[‘A’, ‘B’, ‘D’]

图数据的保存与绘图

import networkx as nx
import matplotlib.pyplot as plt
G = nx.DiGraph()
G.add_node(1)
G.add_edge(2,3)
G.add_edge(3,2)
nx.write_edgelist(G, path="grid.edgelist", delimiter=":")
# write edgelist to grid.edgelist
nx.write_edgelist(G, path="grid.edgelist", delimiter=":")
# read edgelist from grid.edgelist
H = nx.read_edgelist(path="grid.edgelist", delimiter=":")nx.draw(H)
plt.show()

数据库基本统计

!usr/bin/env python

* coding:utf-8 *

import matplotlib.pyplot as plt
from networkx import nx

G = nx.lollipop_graph(4, 6)

pathlengths = []

print(“source vertex {target:length, }”)
for v in G.nodes():
spl = dict(nx.single_source_shortest_path_length(G, v))
print(‘{} {} ‘.format(v, spl))
for p in spl:
pathlengths.append(spl[p])

print(”)
print(“average shortest path length %s” % (sum(pathlengths) / len(pathlengths)))

histogram of path lengths

dist = {}
for p in pathlengths:if p in dist:dist[p] += 1else:dist[p] = 1print('')
print("length #paths")
verts = dist.keys()
for d in sorted(verts):print('%s %d' % (d, dist[d]))print("radius: %d" % nx.radius(G))
print("diameter: %d" % nx.diameter(G))
print("eccentricity: %s" % nx.eccentricity(G))
print("center: %s" % nx.center(G))
print("periphery: %s" % nx.periphery(G))
print("density: %s" % nx.density(G))nx.draw(G, with_labels=True)
plt.show()

source vertex {target:length, }
0 {0: 0, 1: 1, 2: 1, 3: 1, 4: 2, 5: 3, 6: 4, 7: 5, 8: 6, 9: 7}
1 {1: 0, 0: 1, 2: 1, 3: 1, 4: 2, 5: 3, 6: 4, 7: 5, 8: 6, 9: 7}
2 {2: 0, 0: 1, 1: 1, 3: 1, 4: 2, 5: 3, 6: 4, 7: 5, 8: 6, 9: 7}
3 {3: 0, 0: 1, 1: 1, 2: 1, 4: 1, 5: 2, 6: 3, 7: 4, 8: 5, 9: 6}
4 {4: 0, 5: 1, 3: 1, 6: 2, 0: 2, 1: 2, 2: 2, 7: 3, 8: 4, 9: 5}
5 {5: 0, 4: 1, 6: 1, 3: 2, 7: 2, 0: 3, 1: 3, 2: 3, 8: 3, 9: 4}
6 {6: 0, 5: 1, 7: 1, 4: 2, 8: 2, 3: 3, 9: 3, 0: 4, 1: 4, 2: 4}
7 {7: 0, 6: 1, 8: 1, 5: 2, 9: 2, 4: 3, 3: 4, 0: 5, 1: 5, 2: 5}
8 {8: 0, 7: 1, 9: 1, 6: 2, 5: 3, 4: 4, 3: 5, 0: 6, 1: 6, 2: 6}
9 {9: 0, 8: 1, 7: 2, 6: 3, 5: 4, 4: 5, 3: 6, 0: 7, 1: 7, 2: 7}

average shortest path length 2.86

length #paths
0 10
1 24
2 16
3 14
4 12
5 10
6 8
7 6
radius: 4
diameter: 7
eccentricity: {0: 7, 1: 7, 2: 7, 3: 6, 4: 5, 5: 4, 6: 4, 7: 5, 8: 6, 9: 7}
center: [5, 6]
periphery: [0, 1, 2, 9]
density: 0.26666666666666666

中心性

关于常用中心性的可以参考直通车

此处翻译来源与网络,如果错误请批评指正

Degree centrality measures.(点度中心性)
degree_centrality(G) Compute the degree centrality for nodes.
in_degree_centrality(G) Compute the in-degree centrality for nodes.
out_degree_centrality(G) Compute the out-degree centrality for nodes.

Closeness centrality measures.(接近中心性)
closeness_centrality(G[, v, weighted_edges]) Compute closeness centrality for nodes.

Betweenness centrality measures.(中介中心性)
betweenness_centrality(G[, normalized, …]) Compute betweenness centrality for nodes.
edge_betweenness_centrality(G[, normalized, …]) Compute betweenness centrality for edges.

Current-flow closeness centrality measures.(流紧密中心性)
current_flow_closeness_centrality(G[, …]) Compute current-flow closeness centrality for nodes.
Current-Flow Betweenness

Current-flow betweenness centrality measures.(流介数中心性)
current_flow_betweenness_centrality(G[, …]) Compute current-flow betweenness centrality for nodes.
edge_current_flow_betweenness_centrality(G) Compute current-flow betweenness centrality for edges.

Eigenvector centrality.(特征向量中心性)
eigenvector_centrality(G[, max_iter, tol, …]) Compute the eigenvector centrality for the graph G.
eigenvector_centrality_numpy(G) Compute the eigenvector centrality for the graph G.

Load centrality.(不知道)
load_centrality(G[, v, cutoff, normalized, …]) Compute load centrality for nodes.
edge_load(G[, nodes, cutoff]) Compute edge load.

参看文献:
http://networkx.github.io/
https://github.com/networkx/networkx
https://networkx.github.io/documentation/stable/tutorial/index.html
https://bigdata-ny.github.io/2016/08/12/graph-of-thrones-neo4j-social-network-analysis/
https://blog.csdn.net/nnnnnnnnnnnny/article/details/53701277

知识图谱之社交网络分析(SNA)之python处理相关推荐

  1. 技术论坛 | CCF YOCSEF上海即将在 CNCC 举办“知识图谱遇见社交媒体”专题论坛

    中国计算机学会青年计算机科技论坛 CCF YoungComputer Scientists & Engineers Forum CCF YOCSEF上海 CNCC2017大会技术论坛 主题: ...

  2. 电网知识图谱项目总结(1)python代码实现RDF三元组自动化标注

    电网知识图谱项目总结(1)python代码实现RDF三元组自动化标注 文章目录 电网知识图谱项目总结(1)python代码实现RDF三元组自动化标注 简介 文档内容 RDF规范 标注思路 代码结构 详 ...

  3. 基于自杀领域个性化知识图谱的社交媒体自杀意念检测

    ©PaperWeekly 原创 · 作者|曹檑 学校|清华大学博士生 研究方向|自然语言处理 论文标题: Building and Using Personal Knowledge Graph to ...

  4. 知识图谱实战(03):python操作neo4j实战

    Python操作Neo4j例子(官方版本) Neo4j的Python版本驱动 Neo4j 提供了一个Python版本的驱动包,用来连接Neo4j数据库,从而完成图数据库的增删改查操作. 1.安装指定版 ...

  5. 社交网络分析SNA——Pajek使用教程(网络描述统计+中心性及子群分析)

    本文所有操作均基于Pajek5.11版本实现,也可官网下载最新版本,差别不大→Pajek下载地址 目录 一.如何画一个现有网络? 二.如何交互式构建一个网络? 三.Pajek中如何进行自动布局? 四. ...

  6. 基于金融知识图谱的会计欺诈风险识别方法

    点击上方蓝字关注我们 基于金融知识图谱的会计欺诈风险识别方法 陈强1, 代仕娅2 1 兴业银行信息科技部,上海 201201 2 蚂蚁科技国际事业群数据算法技术部,上海 200120 摘要:针对商业银 ...

  7. CNCC 技术论坛 | 知识图谱赋能数字经济

    2018中国计算机大会(CNCC2018)将于10月25-27日在杭州国际博览中心(G20会场)举行,大会主题为「大数据推动数字经济」(Big Data Drives the Digital Econ ...

  8. [Pyhon大数据分析] 五.人民网新闻话题抓取及Gephi构建主题知识图谱

    该系列文章是Python大数据分析系列博客,包括网络爬虫.可视化分析.GIS地图显示.情感分析.舆情分析.主题挖掘.威胁情报溯源.知识图谱.预测预警及AI和NLP应用等.希望该系列文章对您有所帮助. ...

  9. 从知识图谱到事理图谱 | CNCC 2017

    雷锋网AI科技评论按:由中国计算机学会(CCF)主办,福州市人民政府.福州大学承办,福建师范大学.福建工程学院协办的 2017 中国计算机大会(CNCC 2017)于 10.26-10.28 日在福州 ...

  10. 刘挺 | 从知识图谱到事理图谱

    本文转载自 AI科技评论. 在"知识图谱预见社交媒体"的技术分论坛上,哈尔滨工业大学刘挺教授做了题为"从知识图谱到事理图谱"的精彩报告.会后AI科技评论征得刘挺 ...

最新文章

  1. 思谋科技A轮融资超1亿美元 ,成为最年轻“准独角兽”AI企业
  2. CVPR 2021 | Involution:超越 Convolution 和 Self-attention 的神经网络新算子
  3. asp.net的cms 核心代码篇
  4. T-Sql(七)用户权限操作(grant)
  5. 计算机教室内网连接不了,校园网登陆不了内网怎么办?校园网登陆不了内网的解决方法...
  6. 一些鲜为人知的编程事实(省身)
  7. 京东面试官:呦,你对中间件 Mycat了解的还挺深~
  8. Guava入门~Charsets
  9. html5响应式网站优势,响应式网站优势有哪些 真的利于排名优化么
  10. IDEA连接mysql报Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' 的错误
  11. Nginx使用教程(七):使用Nginx缓存之proxy cache
  12. android文件添加一行代码怎么写,Android:以编程方式添加Textview,而不是将文本包装到下一行(示例代码)...
  13. 浅入深出Vue:注册
  14. java nio 详_java nio详解
  15. 17. Store newed objects in smart pointers in standalone statements
  16. PDM系统与PLM系统
  17. Android 中使用AlarmManager设置闹钟详解
  18. 软件人员kpi制定模板_最常用5大绩效工具(附模板):OKR、KPI、MBO、平衡计分卡、360度...
  19. 柳州楼顶种植水稻 国稻种芯·中国水稻节:广西12万亩米飘香
  20. linux cp omitting 复制,linux 系统 cp: omitting directory 问题解决

热门文章

  1. 8个常用的python办公室自动化技巧
  2. 逆向Mac版WPS(解除版本过期限制)
  3. ZEMAX | 如何使用极探测器和 IESNA / EULUMDAT 光源数据
  4. Python pyserial 串口开发
  5. 测试3.0u盘速度软件,SanDisk USB3.0接口的U盘测试
  6. python xlsxwriter dict_Python玩转Excel神器xlsxwriter详解
  7. 盖世无双之国产数据库风云榜-2022年02月
  8. android opengl滤镜,Android OpenGL ES滤镜开发之美颜效果
  9. Latex 求职简历模版
  10. Python3实现简单的http server