支持持久性(redis)的本地敏感哈希的快速python实现。
lshash3的Python项目详细描述
Version: | 0.0.4dev |
---|
具有持久性的局部敏感哈希的快速python实现 支持。
亮点
- 通过使用numpy数组对大量高维数据进行快速哈希计算。
- 内置支持通过redis的持久性。
- 支持多个哈希索引。
- 内置支持通用距离/目标函数,用于对输出进行排序。
安装
LSHash取决于以下库:
- 努比
- redis(如果需要通过redis进行持久化)
- 位数组(如果使用汉明距离作为距离函数)
要安装:
$ pip install lshash
快速启动
为8维输入数据创建6位散列:
>>>fromlshashimportLSHash>>>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:
- 输入数据点是输入维数的数组或元组。
- extra_data = None:
- (可选)要与输入点一起添加的额外数据。
- 根据给定的LSHash实例查询数据点,例如lsh:
lsh.query(query_point,num_results=None,distance_func="euclidean"):
参数:
- query_point:
- 查询数据点是输入维数的数组或元组。
- num_results = None:
- (可选)按排序顺序返回的查询结果数。由 默认情况下,将返回所有结果。
- distance_func = "euclidean":
- (可选)用于对候选人进行排名的距离函数。默认情况下 将使用欧氏距离函数。