我正在使用H2O在大型数据集上生成预测,并将用户ID作为其中一列。但是,一旦我对数据集进行评分,预测数据集就不包含ID ...唯一让事情保持正常工作的是分数的顺序与输入数据集的顺序相匹配,这是非常草率的IMO。
有没有办法指示H2O在预测数据集中保留ID列,或者在评分后添加它但仍在H2O中?
我不太兴奋将分数带到python或R以及带有ID的数据集并使用cbind等等,但如果这是唯一的选择,请加入。
答案 0 :(得分:1)
是的,您只需要将您想要的帧中的信息作为最终输出进行cbind。以下是一个完整的示例:我正在进行回归以根据患者的年龄和风险类别预测患者的身高。 (!)
import h2o
h2o.init()
patients = {
'age':[29, 33, 65],
'height':[188, 157, 175.1],
'name':["Tom", "Dick", "Harry"],
'risk':['A', 'B', 'B']
}
train = h2o.H2OFrame.from_python(
patients,
destination_frame="patients"
)
m = h2o.estimators.H2ODeepLearningEstimator()
m.train(["age","risk"], "height", train)
p = m.predict(train)
train["name"].cbind(p["predict"])
由于我没有任何测试数据,为了举例,我预测了训练数据。最后一步是从train
获取列,并与p
中的列结合使用。 (通过分类,您可以获得其他列,您可能想要或不想包含这些列。)
注意: cbind操作发生在H2O群集中,而不是客户端上。因此,如果这是跨多台机器分布的1亿行数据,那么它的效果非常好。
P.S。请m.train(["age","height"], "risk", train)
进行分类。