支持持久性(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"
(可选)用于对候选人进行排名的距离函数。默认情况下 将使用欧氏距离函数。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我有一个(单个)类别和子类别树,现在我想在其中添加项目作为treeNode   java使用ICU将输出数字(字符串)拼写为整数   在Java中,检查字符是否为元音的最佳方法是什么?   如何解决这个问题。println Apache jkenvar SSL_CLIENT_DN从mod_SSL到java、javascript或html?   有没有办法比较两个Java war文件   java spark sql问题:第一个匹配行上的联接表:rank()不工作   数学模型   所有类文件中的java错误:无法解析R   在64位Windows上发送ctrlbreak到java进程,在32位Windows上发送信号   java是什么让spring boot控制台变得多彩?   java在当前时间和下周六之间还有剩余的分钟/小时吗?   java强制从控制台输入有效的If/Else扫描程序   用组成员显示组名的java   java MediaCodec编码dequeueInputBuffer返回信息\u稍后重试\u?   java是否可以为整个struts webapp配置统一的日期格式格式?   java无法更改#vbox:focused上的vbox边框   java如何解析没有标记的JSON对象   java组织。jsoup。选择选择器$SelectorParseException:无法分析查询“”:位于“”的意外标记