Use pip install hyperloglog to install from PyPI.
importhyperlogloghll=hyperloglog.HyperLogLog(0.01) # accept 1% counting errorhll.add("hello")
print(len(hll)) # 1hll.add("hello")
print(len(hll)) # 1 as items aren't added more than oncehll.add("hello again")
print(len(hll)) # 2If we add a further 1000 random strings (giving a total of 1002 strings) we'll have a count roughly within 1% of the true value, in this case it counts 1007 (within +/- 10.2 of the true value)
# add 1000 random 30 char strings to hllimportrandomimportstring
[hll.add("".join([string.ascii_letters[random.randint(0, len(string.ascii_letters)-1)] forninrange(30)])) forminrange(1000)]
print(len(hll)) # 1007- Added Sliding window HLL version
- Added bias correction from HLL++
- http://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf
- http://hal.archives-ouvertes.fr/docs/00/46/53/13/PDF/sliding_HyperLogLog.pdf
- http://research.google.com/pubs/pub40671.html