概率数据结构
probstructs的Python项目详细描述
概率结构
^ Tt1}$很容易使用Python包装器用于C++库probstructs。它支持指数直方图、计数最小草图(CM草图)和指数计数最小草图(ECM草图)。在
安装
使用pip:
pip install probstructs
来源:
^{pr2}$类
CountMinSketch
计数-最小草图(CM草图)是一种概率数据结构,用作数据流中事件的频率表。它使用哈希函数将事件映射到频率,但与哈希表不同的是,哈希表只使用次线性空间,代价是由于碰撞而导致的某些事件的计算过多。在
C++文档:https://probstructs.readthedocs.io/en/latest/classes.html#countminsketch
fromprobstructsimportCountMinSketchcm_sketch=CountMinSketch(100,4)cm_sketch.inc("aaa",1)cm_sketch.inc("bbb",5)cm_sketch.inc("aaa",2)print(cm_sketch.get("aaa"))# 3print(cm_sketch.get("bbb"))# 5print(cm_sketch.get("ccc"))# 0cm_sketch=CountMinSketch(width=100,depth=4)cm_sketch.inc(key="bbb",delta=5)print(cm_sketch.get(key="bbb"))# 5
指数直方图
指数直方图(EH)是一种概率数据结构,用作流中最后N个元素中特定元素的频率计数器。。在
C++文档:https://probstructs.readthedocs.io/en/latest/classes.html#exponentialhistorgram
fromprobstructsimportExponentialHistorgrameh=ExponentialHistorgram(1)eh.inc(1,1)print(eh.get(1,1))# 1eh.inc(1,1)print(eh.get(1,1))# 2eh.inc(2,1)print(eh.get(1,2))# 1eh=ExponentialHistorgram(window=1)eh.inc(tick=1,delta=1)print(eh.get(window=1,tick=1))# 1eh.inc(tick=1,delta=1)print(eh.get(window=1,tick=1))# 2eh.inc(tick=2,delta=1)print(eh.get(window=1,tick=2))# 1
指数统计MinSketch
指数计数最小草图(ECM草图)结合CM草图和EH来计算流中最后N个元素中不同元素的数量。在
C++文档:https://probstructs.readthedocs.io/en/latest/classes.html#exponentialcountminsketch
fromprobstructsimportExponentialCountMinSketchecm_sketch=ExponentialCountMinSketch(100,4,8)ts=0ecm_sketch.inc("aaa",ts,1)ecm_sketch.inc("bbb",ts,4)ecm_sketch.inc("ccc",ts,8)print(ecm_sketch.get("aaa",4,ts))# 1print(ecm_sketch.get("bbb",4,ts))# 4print(ecm_sketch.get("ccc",4,ts))# 8print(ecm_sketch.get("ddd",4,ts))# 0ecm_sketch=ExponentialCountMinSketch(width=100,depth=4,window=8)ts=0ecm_sketch.inc(key="aaa",tick=ts,delta=1)ecm_sketch.inc(key="bbb",tick=ts,delta=4)ecm_sketch.inc(key="ccc",tick=ts,delta=8)print(ecm_sketch.get(key="aaa",window=4,tick=ts))# 1print(ecm_sketch.get(key="bbb",window=4,tick=ts))# 4print(ecm_sketch.get(key="ccc",window=4,tick=ts))# 8print(ecm_sketch.get(key="ddd",window=4,tick=ts))# 0
变更日志
0.2.0
- 引入命名参数
- 更新文档以包含示例
0.1.0
- 初始版本
- 项目
标签: