计算h2o框架的散列

2024-10-04 05:24:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我想计算一个h2o.frame.H2OFrame的散列值。理想情况下,Rpython。我对h2o.frame.H2OFrame的理解是,这些对象基本上“活”在h2o服务器上(即,由一些Java对象表示),而不是在Rpython内,它们可能是从那里上传的。你知道吗

我想计算哈希值“尽可能接近”实际的训练算法。这就排除了对基础Rpython对象以及从中加载数据的任何基础文件的哈希值(序列化)的计算。 原因是我想捕获h2o的上载函数对底层数据执行的所有(可能的)更改。你知道吗

h2o docs推断,没有通过h2o.frame.H2OFrame公开的类似哈希的功能。 实现h2o数据的散列式摘要的一种可能性是对所有数字列求和,并对分类列执行类似的操作。但是,我真的希望在我的哈希函数中有一些雪崩效应,这样函数输入的小变化会导致输出的大差异。这一要求排除了简单求和之类的情况。你知道吗

是否已经有一些我可能忽略的接口? 如果没有,我如何才能完成上述任务?你知道吗

import h2o
h2o.init()
iris_df=h2o.upload_file(path="~/iris.csv")

# what I would like to achieve
iris_df.hash()
# >>> ab2132nfqf3rf37 

# ab2132nfqf3rf37 is the (made up) hash value of iris_df

谢谢你的帮助。你知道吗


Tags: 数据对象函数服务器irisdf情况hash
2条回答

因此,根据Michal Kurka和Tom Kraljevic的建议,这里有一个python的完整解决方案:

import h2o
import requests
import json

h2o.init()

iris_df=h2o.upload_file(path="~/iris.csv")

apiEndpoint="http://127.0.0.1:54321/3/Frames/"
res=json.loads(requests.get(apiEndpoint+iris_df.frame_id).text)

print("Checksum 1: ",res["frames"][0]["checksum"])

#change a bit
iris_df[0,1]=iris_df[0,1]+1e-3

res=json.loads(requests.get(apiEndpoint+iris_df.frame_id).text)

print("Checksum 2: ", res["frames"][0]["checksum"])

h2o.cluster().shutdown()

这给

Checksum 1:  8858396055714143663
Checksum 2:  -4953793257165767052

谢谢你的帮助!你知道吗

它在restapi1(参见屏幕截图)中可用,您也可以在Python的H2OFrame对象中找到它,但它不是直接公开的。你知道吗

相关问题 更多 >