LSHash
A fast Python implementation of locality sensitive hashing.
I am using https://github.com/kayzhu/LSHash, but it stops to update since 2013.
So I maintain it myself.
Highlights
- Fast hash calculation for large amount of high dimensional data through the use of
numpyarrays. - Built-in support for persistency through Redis.
- Multiple hash indexes support.
- Built-in support for common distance/objective functions for ranking outputs.
Installation
LSHash depends on the following libraries:
- numpy
- redis (if persistency through Redis is needed)
- bitarray (if hamming distance is used as distance function)
To install:
$ pip install lshash
Quickstart
To create 6-bit hashes for input data of 8 dimensions:
from py_lsh import LSHash
lsh = LSHash(6, 8)
lsh.index([1, 2, 3, 4, 5, 6, 7, 8])
lsh.index([2, 3, 4, 5, 6, 7, 8, 9])
lsh.index([10, 12, 99, 1, 5, 31, 2, 3])
lsh.query([1, 2, 3, 4, 5, 6, 7, 7])
[((1, 2, 3, 4, 5, 6, 7, 8), 1.0), ((2, 3, 4, 5, 6, 7, 8, 9), 11)]
Main Interface
- To initialize a
LSHashinstance:
LSHash(hash_size, input_dim, num_of_hashtables=1, storage=None)
parameters:
hash_size: The length of the resulting binary hash.input_dim: The dimension of the input vector.num_hashtables = 1: (optional) The number of hash tables used for multiple lookups.storage = None: (optional) Specify the name of the storage to be used for the index storage. Options include "redis".
To index a data point of a given LSHash instance, e.g., lsh:
lsh.index(input_point, extra_data=None)
parameters:
input_point: The input data point is an array or tuple of numbers of input_dim.extra_data = None: (optional) Extra data to be added along with the input_point.
To query a data point against a given LSHash instance, e.g., lsh:
lsh.query(query_point, num_results=None, distance_func="euclidean")
parameters:
query_point: The query data point is an array or tuple of numbers of input_dim.num_results = None: (optional) The number of query results to return in ranked order. By default all results will be returned.distance_func = "euclidean": (optional) Distance function to use to rank the candidates. By default euclidean distance function will be used.
Metadata
Release files for py-lsh 0.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| py_lsh-0.0.2.tar.gz | 5.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| py_lsh-0.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.8 kB
Release files / py_lsh-0.0.2.tar.gz
| Download URL | py_lsh-0.0.2.tar.gz |
|---|---|
| Size | 5.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9f9d1a8efe9bff2fb527e2bb5fe4f791c1cff29124472a3fb4b5eb99ea1c5e19
|
|
BLAKE2b-256 checksum How to use checksums |
e710d0d2f115768a890010f2d86d6f62b2f959484e82f3e2b060ba5b901d7dc2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.6.1 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.5
|
Release files / py_lsh-0.0.2-py3-none-any.whl
| Download URL | py_lsh-0.0.2-py3-none-any.whl |
|---|---|
| Size | 6.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
42b4ad2328e05bd14d2fdf27183e41d4d085e36b4ad4a912c2ad0348787262ff
|
|
BLAKE2b-256 checksum How to use checksums |
1829fa6e603f720c75692e9f6dba4c972d1b1cfca79ab7bef54fae006fa8f671
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.6.1 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.5
|