[TOC]
这节课主要讲解两个工具:snap.py和google cloud
Introduction to SNAP(Standford Network Analysis Platform)
上图是本节的outline。
What‘s SNAP?
SNAP能够在大型网络上进行工作。
原始的SNAP是用C++写的,后来又用Python在C++的基础上套了一层壳,写了一个Python接口,其实底层还是C++实现的~这很重要!
自带了大量的网络数据集,便于我们学习;
下面是一些自带的网络数据集:
What‘s Snap.py?
由于C++代码运行速度更快,而python对用户使用更友好,所以采用折中的方式~trade-off
Snap.py Tutorial
关于snap.py的tutorial主要包括上面的部分,这节课也会简单的介绍这些东西。
- 基本数据类型
- vectors,hash tables和pairs
- 图和网络
- 生成图
- 添加和遍历节点和边
- 保存和加载图
- 绘图和可视化
Snap.py中的一些命名规定
- 所有以
T
开头的变量,表示的是class type
;- 所有以
P
开头的变量,表示的是graph object
;
老师说这个库很好,他保证我们的作业里面的代码不会超过50行,hhh
Basic Types in Snap.py
Vector Types
Hash Type Types
Pair Types
Basic Graph and Networks Classes
上图中给出了使用
T
和P
的指南。
图的保存以及加载
根据老师的说法,text文件加载的速度要明显慢于binary文件,所以建议存储为binary文件
Plotting & Visualizing in Snap.py
- 使用
Gnuplot
来绘制图的各种属性- 使用
Graphviz
来绘制图的形状
Plotting with Snap.py——Gnuplot
不知道为啥,我的电脑执行完函数之后,只会生成
.plt
和.tab
文件,后面需要自己点积plt
生成.png
,就很神奇。
Drawing Graphs——graphviz
Print Graph Information
当我们在网络上找到一个图的数据集,我们想要知道这个图的一些properties,可以使用
PrintInfo()
函数来获得图的基本信息。
Basic Graph Generators
Advanced Graph Generators
也可以生成一些高级的图形,其实我也不太懂。。。
Subgraphs and Conversions
Connected Components
Node Degrees
Node Centrality
Triads and Clustering Coefficient
Breadth and Depth First Search
Community Detection
在sanp中实现了大多出名的community detection算法
Spectral properties of a Graph
K-core decomposition
Google Cloud
中国的话,用不了。。。