基数估计:线性概率计数器

概率数据结构:用极低内存实现近似计数与集合判断 当精确计数或集合判断占用过多内存时,可牺牲少量精度换取数量级的内存节省。本文基于《High Performance Python》第12章,介绍Morris计数器、K-Minimum Values、Bloom过滤器及HyperLogLog等概率数据结构的核心思路,并配合Wikipedia词频统计案例展示各算法在误差、处理时间与内存上的真实表现。 阅读详情

    线性概率计数器可以在线性时间你估计数据的基数。

 

# -*- coding: utf-8 -*-
"""
Created on Tue Jan 15 16:17:10 2013

@author: chen ming
基数估计:线性概率计数器
"""
import random
import math
M=120000      #
rna= 20000
N=14
data=[random.random() for i in range(M)]
bitmap=[0]*rna
for it in data:
    ind = ((hash(it))) % (rna-1)
    bitmap[ind]=1
    
rate=float(rna-sum(bitmap))/rna

print 'sum(bitmap)  %d' % sum(bitmap)
print 'size(bitmap) %d' %  rna
print 'num of 0 in bitmap %f' % rate
aa=-rna*math.log(rate)
print 'result: %d ' % aa
ac=aa/M
print 'result//M: %f ' % ac


结果:

sum(bitmap)  19942
size(bitmap) 20000
num of 0 in bitmap 0.002900
result: 116860 
result//M: 0.973841 


准确率为97.3%

 

probabilistic:概率数据结构 概率-概率数据结构 快速开始 要在具有Scala 2.11或更高版本的现有SBT项目中使用概率,请根据需要将以下依赖项添加到build.sbt : libraryDependencies ++ = Seq ( " io.chrisdavenport " %% " probabilistic " % " <version> " ) 立即下载

相关推荐

避坑指南:解决‘Logical volume contains a filesystem in use’错误,顺利完成LVM根目录扩容

本文详细解析了Linux系统中LVM根目录扩容时遇到的‘Logical volume contains a filesystem in use’错误,提供了从错误诊断到实战解决方案的完整指南。通过动态扩容技术、单用户模式操作和LVM快照等方案,帮助管理员顺利完成根目录扩容,避免数据丢失和系统崩溃。

weixin_28702105的博客 227

夜深人静写算法(十四)- 基数估计 (Cardinality Estimation)

目录 一、概述       1、最小值估值法       2、哈希法       3、k-前缀法 二、Linear Counting       1、算法思路       2、算法证明 三、LogL...

Arthur_Holmes的博客 3118

第十九届全国大学生智能车竞赛越野信标 硬件篇

全国大学生智能汽车竞赛,越野信标组

2301_77568650的博客 4115

Lero: A Learning-to-Rank Qery Optimizer

背景 传统的查询优化器 传统的基于成本的查询优化器有三个主要组成部分:基数估计器、成本模型和计划枚举器。 在开发这些组件时,各种启发式方法是必不可少的。特定的常数在成本模型中很普遍。它们通常经过多年的校准和调整,以确保在某些系统和硬件配置下,估计的成本与计划的性能很好地匹配。但对于不同的数据分布或系统配置,这种启发式方法并不总是可靠的。因此,成本模型可能会产生重大错误,传统查询优化器生成的计划可能质量较差。 目前的ML模型 开发ML模型来取代传统的基数估计器、基于启发式的成本模型和计划枚举器是一个

qq_52666912的博客 966

Halcon Camera-calibration 相关算子(一)

Halcon Camera-calibration 相关算子介绍

qq_44744164的博客 1366

可变形卷积(Deformable Conv)原理解析与torch代码实现

图6为可变形卷积示意图。图1所示为普通卷积在输入特征图上进行卷积计算的过程,卷积核大小为3*3,在输入特征图尺寸为7*7上进行卷积,将卷积核权重与输入特征图对应位置元素相乘并求和得到输出特征图元素,按一定方式滑动窗口就能计算得到整张输出特征图。图6所示,在input feature map上普通卷积操作对应卷积采样区域是一个卷积核大小的正方形(绿框),而可变形卷积对应的卷积采样区域为一些蓝框表示的点,这就是可变形卷积与普通卷积的区别。先来一张图感受一下,图3为标准卷积与可变形卷积的卷积示例。

panghuzhenbang的博客 5万+

C++线性概率计数器

线性概率计数器,用于基数估计。所谓基数,就是数据中不重复的数据有多少个。例如共有N个数据,开辟一片长度为M的bitmap,清零,对N个数据进行遍历,每个数据 取哈希,再对M取模,得到的值为i,于是将bitmap中第i个元素置位为1,最后统计bitmap中0的比例rate,计算-M*ln(rate)的值,即为N个数据中基数的估计值。   #include #include #inclu

纯,属虚构 1328

先进封装Interposer仿真步骤及说明

摘要: Interposer仿真是2.5D/3DIC封装设计的关键环节,涵盖信号完整性(SI)、电源完整性(PI)、热及结构应力分析。流程分为五个阶段:1)前处理,定义层叠结构与材料属性;2)参数提取,通过3D电磁建模获取TSV、传输线等寄生参数;3)仿真设置,选择求解器并设定频率范围;4)结果分析,评估信号损耗、阻抗及电源网络性能;5)后处理,进行多物理场协同仿真并生成模型。核心挑战在于多尺度与多物理场耦合,需优先确保高速信号与电源网络的仿真精度。常用工具包括Ansys HFSS、Cadence Sigr

DSY_0324的博客 1345

基数估计算法(一):Flajolet-Martin算法

写作不易,转载请注明出处: http://blog.youkuaiyun.com/wbin233/article/details/78730977 简介说起基数估计算法的始祖,或许就是由Flajolet和Martin大佬发表的论文《 Probabilistic counting algorithms for data base applications 》开始的吧。他们提出在大数据中基于概率来估计基数的算法,江湖人称FM算法。

wbin233的博客 8691

SDRAM控制器——添加读写FIFO

用FIFO实现数据缓存

H19981118的博客 2627

使用Gitlab 搭建私有镜像仓库(外置Nginx)

为了让团队尽快使用Gitlab的CI进行工作,必须做好Gitlab的初始化工作,大家都知道拉取镜像由于某些原因,会比较慢,因此构建自己的私有镜像仓库就成为了关键的一步。当然私有镜像仓库的搭建有很多种方式,这里直接使用Gitlab提供的镜像仓库功能。一揽子解决方案比较香。gitlab真的越来越好用了,有了这个镜像仓,也没必要再使用三方的镜像仓库了。Devops 真好用!

网尘的技术专栏 1829

Stream-lib基数估计详解:HyperLogLog算法的神奇原理与实践

在大数据时代,快速准确地统计集合中的独立元素数量(基数)是许多应用场景的核心需求。无论是网站UV统计、网络流量分析还是数据库去重,传统的计数方法往往面临内存占用过大的问题。**Stream-lib**作为一款高效的流数据处理库,提供了基于HyperLogLog算法的基数估计解决方案,仅需极小的内存就能实现近似计数,完美平衡了精度与性能。 ## 🚀 HyperLogLog:让大数据计数不再沉重

gitblog_00884的博客 844

会员管理小程序实战开发04-用户登录及注册

上一节我们介绍了用户信息数据源的创建及网格布局的使用,本节的话我们讲解用户的登录及注册功能任何开发。 在我们前述章节里介绍的,不论是管理员表还是用户表,都涉及到一个问题就是openid,那这个openid如何获取呢?如果我直接把代码贴给你,就缺失了一个思考的过程。既然这个是微信提出的概念,那么必然就会有官方文档作为对应。程序开发的基本功就是要会看官方文档,很多初学的开发同学可能会对官方文档颇有诟病,觉得不够基础。怎么说呢,当你进入到开发岗之后,自学能力是必要的,还是要试着可以看懂官方文档才好。 登录接口解读

低代码布道师的博客 1567

基于基数估计算法的 Harness 请求基数监控

单个维度基数:所有请求的独立IP数、独立用户ID数组合维度基数:租户A + 接口/api/login+ 区域us-west-1的独立用户ID数基数爆炸指的是当维度标签数量增加时,维度组合的数量呈指数级增长,同时每个组合的基数规模也在扩大,最终导致监控系统的存储和计算开销无法承受。tenant_id(10万+)、(100+)、endpoint(1000+)、region(100+)、(10+)仅前3个维度的组合数就达到了10万 * 100 * 1000 = 10^10,完全无法用精确计数存储。

Java大师兄的博客 241

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

大数据计算:如何仅用1.5KB内存为十亿对象计数

为了更好地理解已经明确基数的大数据集的挑战,我们假设你的日志文件包含16个字符的ID,并且你想统计不同ID的数量.例如: 4f67bfc603106cb2 这16个字符需要用128位来表示。6万5千个ID将需要1MB的空间。我们每天收到30多亿条事件记录,每条记录都有一个ID。这些ID需要3840亿位或45GB的存储。而这仅仅是ID字段需要的空间。我们采取一种简单的方法获取日常事件记录

每天积累一点点 757

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

大数据计算:如何仅用1.5KB内存计算十亿个不同的对象

摘要:AddThis的数据分析副总监Matt Abrams在High Scalability上发表了一篇文章,介绍了他们公司如何应对大数据。Matt Abrams表示,AddThis仅仅用了1.5KB内存的内存就计算了十亿个不同的对象,这与他们所使用的计算方法分不开的。 AddThis(前身为Clearspring)的数据分析副总监Matt Abrams在High Scalabili

zhoubl668的专栏:远帆,梦之帆! 1675

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

PDSA: 基于概率数据结构与算法的Python库

PDSA: 基于概率数据结构与算法的Python库 项目基础介绍 PDSA(Probabilistic Data Structures and Algorithms)是一个开源的Python库,旨在提供概率数据结构和算法的实现。这个项目利用不同的哈希技术,构建了一系列数据结构,它们在提供近似答案的同时,能够可靠地估计错误概率。PDSA非常适合对内存使用有严格限制,且可以容忍一定误差的场景。该项目的...

gitblog_00174的博客 539

大数据计算:如何仅用1.5KB内存为十亿对象计数 .

Big Data Counting: How To Count A Billion Distinct Objects Using Only 1.5K This is a guest post by Matt Abrams (@abramsm), from Clearspring, discussing how they are able to accurately estimate th

z_l_l_m的专栏 794

转 高压缩空间占用的 Hyper LogLog 算法

转 高压缩空间占用的 Hyper LogLog 算法

qq_43725037的博客 173

大数据计数:如何仅用1.5KB内存为十亿对象计数

SDN首页> 云计算 大数据计数:如何仅用1.5KB内存为十亿对象计数 发表于2012-12-21 10:04| 16895次阅读| 来源High Scalability| 114 条评论| 作者Matt Abrams 算法大数据 摘要:AddThis的数据分析副总监Matt Abrams在High Scalability上发表了一篇文章,介绍了他们公司

SimpleCherise 521
上一篇: Python_yuv读取,yuv转rgb
下一篇: 结构体零长数组的妙用
纯属虚构
博客等级 码龄17年 86粉丝 194原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值