高效的多对多关系集统计

mtm_stats的Python项目详细描述


mtm_stats
高效的多对多关系集统计




此模块在两个集
(a和b)具有多对多关系的常见情况下计算统计(计数)。明确地,它计算:

**连接计数*(或仅*计数*):a的成员必须与b的连接数
**交叉计数*:a的两个成员共享到b的连接数

此模块旨在尽可能快地计算a中每个可能组合的
成员的连接数近似值。
BR/>该模块的输入是A/B对的列表,即:
([A1,B1),(A1,B2),(A2,B2),…] [BR/>< BR/>如果NYA是A的长度,连接计数的大小为n_a,
交叉计数的大小为n_a*(n_a-1)/2。


>可以很容易地从这些集合中派生出任何其他集合属性。

*并集计数(a1,a2)=计数(a1)+计数(a2)-交叉点计数(a1,a2)
*单面计数(a1,a2)=计数(a1)-交叉点计数(a1,a2)
*对称差分计数(a1,a2)=并集计数(a1,a2)-交集计数(a1,a2)


并集实际上是在“从数组输出获取指令”的主“mtm_stats”函数中计算的

当a和b之间的连接稀疏时,此方法将是最有效的方法。

有一个可选的近似可以用来提高性能:
一个小交叉路口的截止滤波器(默认值为0)。如果截止0,任何结果的交叉计数和lt;=截止将被近似为0。模块使用多种技术组合来实现这一目标:
*核心在c和cython中实现
*位打包(b的成员每个被分配一个位)
*一种稀疏块阵列压缩方案,它忽略位打包集中的大零块
*高效应用的位操作(&;,,popcount)
*仅使用2索引稀疏数组存储非零交叉点:[(a1,a2,交叉点计数),…]
*上述可选截止点

这些技术不仅比强力实现节省了大量时间,但也要减少内存使用量
(这很容易让一台只有100k个元素的机器崩溃)。


Count Min Sketch或MinHash:
*http://bravenewgeek.com/tag/count Min Sketch/
*https://redislabs.com/blog/count Min Sketch估算材料的艺术和科学执行这类操作的是algebird和datasketch:
*https://github.com/twitter/algebird
*https://github.com/ekzhu/datasketch

您只需执行以下操作(或类似操作):

*sudo apt get install-y build essential cmake g++python python dev python setuptools python numpython
*sudo easy廑u install pip
*sudo pip install numpy cython
*sudo pip install mtm廑stats

OpenMP将自动利用所有可用的处理核心。
因此,你需要得到gcc(而不是缺乏openmp支持的clagg),从https://brew.sh/

/usr/bin/ruby-e“$(curl-fssl-https://raw.gitububuusercontent.com/homembrew/install/master/install)”



<


















brew安装gcc cmake

cython

pip安装numpy cython

设置编译器命令并包含路径环境变量(可能需要更新版本)

export cc=/usr/local/cell/gcc/6.3.0_1/bin/gcc-6
export cxx=/usr/local/cell/gcc/6.3.0_1/bin/g++-6
exportc_include_u path=/users/developers/.virtualenvs/learning_u intelligence_u data/lib/python2.7/site packages/numpy/core/include

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

推荐PyPI第三方库


热门话题
java Springboot数据JPA findByDate()   java是否可以有多个顶级树节点?   javahibernatehql。子查询中的多个   使用Twilio验证java Keyclope电话号码   java重写对象的toString()表示返回意外的符号   java Android最多每15分钟调用一个方法,否则使用保存的数据   在java swing中突出显示jeditorpane中的一些单词   java将时间戳转换为UTC时区   由于main中存在ArrayIndexOutOfBoundsException,导致java编译错误   java如何通过requestscope获取对象内部对象的值?   java访问安卓代码内的网站并检索生成的图像   java这种日期格式的模式是什么?   java解析包含超链接的xml字符串