频繁子图挖掘算法gspan的实现

gspan-mining的Python项目详细描述


gspan

中文自述请转到README-Chinese

gspan是一种挖掘频繁子图的算法。

这个程序用python实现gspan。github上的存储库是https://github.com/betterenvi/gSpan。这个实现借鉴了gboost的一些思想。

无向图

此程序支持无向图,并在数据集graphdata/graph.data上生成与gboost相同的结果。

有向图

到目前为止(日期:2016-10-29),gboost不支持有向图。这个程序实现了有向图的gspan。更具体地说,该程序可以挖掘至少有一个节点可以到达子图中其他节点的频繁有向子图。但是由于作者没有做足够的测试,所以不能保证正确性。在数据集graphdata/graph.data.directed.1graph.data.simple.5上运行几次之后,就没有错误了。

如何安装

这个程序同时支持python 2python 3

方法1

使用pip安装此项目:

pip install gspan-mining
方法2

首先,克隆项目:

git clone https://github.com/betterenvi/gSpan.git
cd gSpan

您可以选择将此项目安装为第三方库,以便可以在任何路径下运行它。

python setup.py install

如何运行

命令是:

python -m gspan_mining [-s min_support][-n num_graph][-l min_num_vertices][-u max_num_vertices][-d True/False][-v True/False][-p True/False][-w True/False][-h] database_file_name 
一些例子
  • 从./graph data/graph.data读取图形数据,并在最小支持为5000的情况下挖掘无向子图
python -m gspan_mining -s 5000 ./graphdata/graph.data
  • 从./graph data/graph.data读取图形数据,在最小支持为5000的情况下挖掘无向子图,并可视化这些频繁子图(需要matplotlib和networkx)
python -m gspan_mining -s 5000 -p True ./graphdata/graph.data
  • 从./graph data/graph.data和mine-directed子图中读取图形数据,最小支持为5000
python -m gspan_mining -s 5000 -d True ./graphdata/graph.data
  • 打印帮助信息
python -m gspan_mining -h

作者还使用jupyter笔记本编写了example code。给出了挖掘结果和可视化结果。详情请参阅main.ipynb

运行时间

  • 环境

    • 操作系统:Windows 10
    • python版本:python 2.7.12
    • 处理器:Intel(R)Core(TM)i7-4790 CPU@3.60GHz 3.60GHz
    • 内存:8.00 GB
  • 运行时间 在数据集./graphdata/graph.data上,运行时间如下所示:

Min supportNumber of frequent subgraphsTime
50002651.48 s
30005269.07 s
10004553 m 49 s
60012357 m 29 s
400271012 m 53 s

参考值

gspan:基于图的子结构模式挖掘,作者x.yan和j.han。 过程。2002年国际数据挖掘会议(ICDM'02)。

一个C++实现的GSPAN。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java用变化的替换字符串替换子字符串   从数据库中断中恢复的oracle Java DAL?   Android/Java页边距位于左/右/底部   java如何用相同的源代码构建不同的APK?(我发现了一个错误)   java正则表达式,仅当字符串以一行中的3个数字开头时才匹配第一个数字   使用以xml为输入的给定端点调用java中的rest-ful web服务?   java长字符串转换为UTF8引发异常   java如何使用截取方法获取ArrayList   java将计算列添加到可观察列表中   正则表达式如何在java正则表达式中使用组?   java正则表达式只接受字母表和空格,不允许在字符串的开头和结尾使用空格   java简单onclick按钮在安卓中不起作用   java如何在Spring中只实现Crudepository的特定方法?   java无法使用json对象NPE读取jsonarray   java我可以添加maven依赖项,这些依赖项被打包为除此之外的任何东西。罐子