用H2O-MOJO模型预测六角体模型美国石油学会

2024-05-15 22:17:48 发布

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

我目前正在尝试如何加载一个节省的水分子MOJO模型,并在Spark数据帧上使用它,而不需要起泡水。我尝试使用的方法是在Spark启动时加载一个h2o-genmodel.jar文件,然后使用PySpark的Py4J接口来访问它。{myaccess将如何生成具体的值。在

下面是一个最小的例子:

列车模型

import h2o
from h2o.estimators.random_forest import H2ORandomForestEstimator
import pandas as pd
import numpy as np

h2o.init()

features = pd.DataFrame(np.random.randn(6,3),columns=list('ABC'))
target = pd.DataFrame(pd.Series(["cat","dog","cat","dog","cat","dog"]), columns=["target"])
df = pd.concat([features, target], axis=1)
df_h2o = h2o.H2OFrame(df)

rf = H2ORandomForestEstimator()
rf.train(["A","B","C"],"target",training_frame=df_h2o, validation_frame=df_h2o)

拯救魔咒

^{pr2}$

加载MOJO

from pyspark.sql import SparkSession

spark = SparkSession.builder.config("spark.jars", "/home/ec2-user/Notebooks/mojo/h2o-genmodel.jar").getOrCreate()

MojoModel = spark._jvm.hex.genmodel.MojoModel
EasyPredictModelWrapper = spark._jvm.hex.genmodel.easy.EasyPredictModelWrapper
RowData = spark._jvm.hex.genmodel.easy.RowData

mojo = MojoModel.load(model_path)
easy_model = EasyPredictModelWrapper(mojo)

对单行数据进行预测

r = RowData()
r.put("A", -0.631123)
r.put("B", 0.711463)
r.put("C", -1.332257)

score = easy_model.predictBinomial(r).classProbabilities

所以,到目前为止我已经能够得到。我遇到麻烦的地方是我发现很难判断score正在回馈给我的东西。print(score)产生以下结果:<py4j.java_gateway.JavaMember at 0x7fb2e09b4e80>。想必一定有办法从这个对象得到实际生成的值,但是我该怎么做呢?在


Tags: importtargetdfeasyjvmmojocatspark
1条回答
网友
1楼 · 发布于 2024-05-15 22:17:48

您可以找到返回的对象hereclassProbabilities是一个Java array,而Java数组没有toString方法,这就是print语句返回非人类可读内容的原因。在

访问此值的一种方法是使用py4j

例如,这应该是有效的:

for i in easy_model.predictBinomial(r).classProbabilities:
...     print(i)

或者你可以把它藏起来。在

相关问题 更多 >