工欲善其事,必先利其器
最近一直在做社交网络挖掘相关的工作,一直用的networkx这个python工具,享受python带来的便利的同时,要忍受networkx的性能问题。当分析的网络较小的时候,networkx没有问题,但是节点有几百万的时候,networkx真的很慢。所以,我就逐渐使用igraph。igraph是c实现的,性能比networkx肯定要好,而且,提供的api更丰富一些,同时支持python和R的接口,使用起来很方便。具体的区别,我会在使用过程中不断总结,并且和大家进行分享。
下载
下载igraph:点击这里。下载python接口:点击这里。这两个连接,都是针对0.5.4版本的,10年更新的。那之后,到现在还没有更新,略感失望。
安装
安装命令比较简单。 安装igraph命令如下:
./configure make make install
安装python接口如下:
python setup.py install
一些问题
在python中import igraph的时候,会出现以下异常
>>> from igraph import Graph Traceback (most recent call last): File "<stdin>", line 1, in <module> File "igraph/__init__.py", line 30, in <module> from igraph.core import * ImportError: No module named core
>>> from igraph import * Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python2.6/dist-packages/python_igraph-0.5.4-py2.6-linux-x86_64.egg/igraph/__init__.py", line 30, in <module> from igraph.core import * ImportError: libigraph.so.0: cannot open shared object file: No such file or directory
主要是因为找不到libigraph.so.0的库。可以如下操作
sudo updatedb locate libigraph.so.0
找到库的位置之后,例如/usr/local/lib 执行
export LD_LIBRARY_PATH=/usr/local/lib
即可。 提供的功能如何,还需要进一步使用,不过性能应该比networkx有不少提升。欢迎交流,分享使用心得,由于这个库很久没有更新,且开源,如果可以,大家都可以贡献自己的代码,是一件很棒的事情。