(H2O.ai)当估算器预测数据集时,列名称或顺序是否重要?

时间:2018-02-27 02:34:04

标签: python h2o

h2o估算器是否需要让输入数据集具有与之相同的列名(无论是否忽略某些列),还是重要的顺序(在这种情况下,可以被忽略的列被其他数据替换)?

EG。在使用h2o模型预测数据集时,假设DRF用户界面中h2o flow模型的培训框架具有以下形式:

fa | fb | fc | meta_a | meta_b | response
---------------------------------------
fa1| fb1| fc1| meta_a1| meta_b1| response1
fa2| fb2| fc2| meta_a2| meta_b2| response2
....

我为流UI指定了忽略meta _...列。

现在说我在python中加载该模型,并希望用新的数据集frame_in来预测它,如:

est = h2o.load_model('/path/to/exported/model/file')
preds = est.predict(frame_in)

其中frame_in是格式为pandas的数据框:

Fa | Fc | Fb | meta_c | meta_d | response
---------------------------------------
fa1| fb1| fc1| meta_a1| meta_b1| response1
fa2| fb2| fc2| meta_a2| meta_b2| response2
.... 

其中实际列名已被更改,因此fa = Fa,fb = Fb,fc = Fc(虽然它们代表相同的特征),并且元_...功能是完全不同的数据。

我想在这种情况下会出现错误,但出于什么原因?列的排序(这再次让我问在培训期间被忽略的元_...列是否可以在这里完全不同的数据)或列名称的更改?是否有任何文件澄清了这一点(看起来here我无法分辨)?感谢。

1 个答案:

答案 0 :(得分:0)

订单无关紧要。只有名字才重要。请参阅下面的示例来演示这一点(对不起,它是R,但在Python中行为是相同的:这里唯一的R特定事项是:a)使用内置iris; b)使用t(d),否则我最终得到一个4行,1列H2O帧。)

顺便说一句,如果指定列索引而不是名称,H2O首先做的就是将它们转换为列名。 (参见下面的m@parameters$x输出。)

library(h2o)
h2o.init()

iris <- as.h2o(iris)

m <- h2o.randomForest(1:4, 5, iris)
m@parameters$x

d <- c(1.4,3.6,5.0,0.2)
names(d) <- c("Petal.Length", "Sepal.Width", "Sepal.Length", "Petal.Width")

test <- as.h2o(t(d))
test

h2o.predict(m, test)

P.S。关于您的示例,您需要重命名(小写)测试数据中的列名称,以便它们与训练数据匹配,然后它将起作用。