支持持久性(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在“for语句”中打印数组   使用jaxb外部绑定自定义时发生java错误   jdbc如何在Java(ProcessBuilder)中创建GlassFish的连接池   java正在尝试打印名称   java在Spring表达式语言中使用正则表达式提取子字符串   java如何将字符串流式传输到另一个类   jakarta ee ResourceBundle来自Java/Struts和replace表达式   tomcat支持java的可能原因。网SocketInputStream。socketRead0   java无法从joda dateTime对象中删除毫秒   java永远隐藏导航栏   具有更多字段的java ItemizeOverlay   使用jsptag的java搜索记录   java如何在Android Q中检查互联网连接?   java如果1是标准的EOF字节,为什么DataInputStream会这样做?   线程环境中的多线程mongodb java客户端断开连接   java正则表达式中的非捕获组   java疯狂拍卖定制售价   java Mybatis自动映射以支持dot   java在线获取原始格式的JSON URL   java意外字符“ï”,使用Jackson解析JSON