一个快速的Python实现,具有持久性(Redis)支持的局部敏感哈希。
项目描述
- 版本::
- 0.0.4dev
一个具有持久性支持的快速Python实现局部敏感哈希。
亮点
通过使用numpy数组,对大量高维数据进行快速哈希计算。
内置对持久性的支持通过Redis。
支持多个哈希索引。
内置对常见距离/目标函数的支持,用于排名输出。
安装
LSHash依赖于以下库
numpy
redis(如果需要通过Redis进行持久性)
bitarray(如果使用汉明距离作为距离函数)
要安装
$ pip install lshash
快速入门
为8维度的输入数据创建6位哈希
>>> from lshash 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)]
主要接口
初始化一个LSHash实例
LSHash(hash_size, input_dim, num_of_hashtables=1, storage=None, matrices_filename=None, overwrite=False)
参数
- hash_size:
结果二进制哈希的长度。
- input_dim:
输入向量的维度。
- num_hashtables = 1:
(可选) 用于多次查找的哈希表数量。
- storage = None:
(可选) 指定用于索引存储的存储名称。选项包括“redis”。
- matrices_filename = None:
(可选) 指定随机矩阵存储或存储的路径.npz文件,如果文件尚不存在
- overwrite = False:
(可选) 是否覆盖已存在的矩阵文件
为了索引给定 LSHash 实例的数据点,例如 lsh
lsh.index(input_point, extra_data=None):
参数
- input_point:
输入数据点是一个包含 input_dim 个数字的数组或元组。
- extra_data = None:
(可选) 与 input_point 一起添加的额外数据。
针对给定 LSHash 实例查询数据点,例如 lsh
lsh.query(query_point, num_results=None, distance_func="euclidean"):
参数
- query_point:
查询数据点是一个包含 input_dim 个数字的数组或元组。
- num_results = None:
(可选) 按排名顺序返回的查询结果的数目。默认情况下将返回所有结果。
- distance_func = "euclidean":
(可选) 用于排名候选者的距离函数。默认情况下将使用欧几里得距离函数。
关闭
lshash3-0.0.8.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | aec18362311a44c62a3440915fd26533f2d6fc3708bfd5063d4856390ae9d220 |
|
MD5 | f5a100db4eca21aa23abb995a3aeaa62 |
|
BLAKE2b-256 | 51a7825799ea4c52ff477aae56f08b172016c434cd0264cbdd9cd7d82895bfe4 |