Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算h2o帧的散列_Python_R_H2o - Fatal编程技术网

Python 计算h2o帧的散列

Python 计算h2o帧的散列,python,r,h2o,Python,R,H2o,我想计算h2o.frame.H2OFrame的一些散列值。理想情况下,在R和python中。我对h2o.frame.H2OFrame的理解是,这些对象基本上是在h2o服务器上“活动”的(即,由一些Java对象表示),而不是在R或python中上载它们 我想计算“尽可能接近”实际训练算法的散列值。这就排除了对底层R或python对象以及从中加载数据的任何底层文件的哈希值(序列化)的计算。 这样做的原因是我想捕获h2o的上传函数对底层数据执行的所有(可能)更改 根据推断,不存在通过h2o.frame

我想计算
h2o.frame.H2OFrame
的一些散列值。理想情况下,在
R
python
中。我对
h2o.frame.H2OFrame
的理解是,这些对象基本上是在
h2o
服务器上“活动”的(即,由一些
Java
对象表示),而不是在
R
python
中上载它们

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

根据推断,不存在通过
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

感谢您的帮助。

它在REST API中可用(请参见屏幕截图),您也可以在Python中的H2OFrame对象中访问它,但它不是直接公开的。

它在REST API中可用(请参见屏幕截图)您可能也可以在Python中的H2OFrame对象中找到它,但它不是直接公开的。

因此,这里是一个基于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

谢谢你的帮助

下面是一个基于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

谢谢你的帮助

如果我没记错的话,在java端已经有类似的计算了。我认为在后端使用它的部分原因是为了跟踪是否已经为一个帧计算了像min/max/mean这样的rollupstats。如果手动查看rest api json响应,您可能会发现它。我现在已经查看了
importfile
PostFile
/
ParseSetup
的rest api响应。所有这些都不包含任何类似哈希的内容。顺便说一句:我通过flow web界面和Chrome开发者工具查看了它。我们确实公开了校验和字段,这似乎是您要查找的内容:它在REST API中返回。@TomKraljevic抱歉,可能误解了您的评论,并认为我会得到一个json(带有校验和)直接作为对
ImportFiles
PostFile
的响应。如果我没记错的话,java端已经有类似的计算了。我认为在后端使用它的部分原因是为了跟踪是否已经为一个帧计算了像min/max/mean这样的rollupstats。如果手动查看rest api json响应,您可能会发现它。我现在已经查看了
importfile
PostFile
/
ParseSetup
的rest api响应。所有这些都不包含任何类似哈希的内容。顺便说一句:我通过flow web界面和Chrome开发者工具查看了它。我们确实公开了校验和字段,这似乎是您要查找的内容:它在REST API中返回。@TomKraljevic抱歉,可能误解了您的评论,并认为我会得到一个json(带有校验和)直接作为对
importfile
PostFile
的响应。